BASIC4MCU | 질문게시판 | 도와주세요.아두이노 버튼으로 fnd 및 스텝모터 돌리기
페이지 정보
작성자 아두이노배우기 작성일2019-01-11 17:51 조회3,943회 댓글0건첨부파일
본문
아두이노 우노입니다. 여기에 판매하는 다기능확장쉴드를 붙였습니다.
공부하면서 알았네요 74HC595가 fnd를 제어하는것을요...
여기저기 돌아다니면서 버튼으로 fnd 바꾸는 것을 했습니다.
아울러 스텝모터 돌리는 것도 했습니다.
문제는 이 둘의 조합인데...도저히 안되네요.ㅜㅜ
좀 도와주세요.
하고자 하는 것이 버튼누르면 숫자가 올라가거나 내려가는 것입니다. 이때 숫자대로 스텝모터의 속도가 달라지는 것입니다.
<<스텝모터>> 돌리는 것입니다.
int PUL=9; //define Pulse pin
int DIR=6; //define Direction pin
int ENA=5; //define Enable Pinvoid setup() {
Serial.begin(9600);
pinMode (PUL, OUTPUT);
pinMode (DIR, OUTPUT);
pinMode (ENA, OUTPUT);
digitalWrite(DIR,HIGH);
digitalWrite(ENA,HIGH);
}void loop() {
digitalWrite(PUL,HIGH);
delayMicroseconds(100);
digitalWrite(PUL,LOW);
delayMicroseconds(100);
}
딜레이를 바꾸면 속도가 바뀝니다.
<<버튼으로 fnd제어>>입니다.
#define LATCH_DIO 4
#define CLK_DIO 7
#define DATA_DIO 8
#define BUTTON1 A1
#define BUTTON2 A2
#define BUTTON3 A3
const byte SEGMENT_MAP[] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0X80,0X90};
const byte SEGMENT_SELECT[] = {0xF1,0xF2,0xF4,0xF8};
unsigned long Cur_ms_Count;
unsigned long Last_ms_Count;
int Count;void setup ()
{
pinMode(LATCH_DIO,OUTPUT);
pinMode(CLK_DIO,OUTPUT);
pinMode(DATA_DIO,OUTPUT);
Cur_ms_Count = millis();
Last_ms_Count = 0;
Count = 0;
}void loop() {
if(!digitalRead(BUTTON1))
{
Cur_ms_Count = millis();
if(Cur_ms_Count - Last_ms_Count > 200)
{
Last_ms_Count = Cur_ms_Count;
if(Count < 9999)
{
Count++;
} else
{
Count = 0;
}
}
}if(!digitalRead(BUTTON2)) {
Cur_ms_Count = millis();
if(Cur_ms_Count - Last_ms_Count > 200)
{
Last_ms_Count = Cur_ms_Count;
if(Count > 0)
{
Count--;
} else
{
Count = 0;
}
}
}if(!digitalRead(BUTTON3)) {
Count = 0;
}
WriteNumber(Count);
}void WriteNumber(int Number)
{
WriteNumberToSegment(0 , Number / 1000);
WriteNumberToSegment(1 , (Number / 100) % 10);
WriteNumberToSegment(2 , (Number / 10) % 10);
WriteNumberToSegment(3 , Number % 10);
}
void WriteNumberToSegment(byte Segment, byte Value)
{
digitalWrite(LATCH_DIO,LOW);
shiftOut(DATA_DIO, CLK_DIO, MSBFIRST, SEGMENT_MAP[Value]);
shiftOut(DATA_DIO, CLK_DIO, MSBFIRST, SEGMENT_SELECT[Segment] );
digitalWrite(LATCH_DIO,HIGH);
}
댓글 0
조회수 3,943등록된 댓글이 없습니다.