А скетч какой залит?
А скетч какой залит?
cкетч
PHP код:
#define encoder0PinA 2
#define encoder0PinB 3
#define encoder0PinC 4 //кновка1
#define encoder0PinD 5 //кновка2
#define encoder0PinE 6 //кновка3
#define encoder0PinF 7 //кновка4
#define encoder0PinG 8 //кновка5
#define encoder0PinH 9 //кновка6
byte bytes[7]={0,7,9,11,13,15,17} ;
void setup()
{
pinMode(encoder0PinA, INPUT);
digitalWrite(encoder0PinA, HIGH); // подключить подтягивающий резистор
pinMode(encoder0PinB, INPUT);
digitalWrite(encoder0PinB, HIGH); // подключить подтягивающий резистор
pinMode(encoder0PinC, INPUT);
digitalWrite(encoder0PinC, HIGH); // подключить подтягивающий резистор
pinMode(encoder0PinD, INPUT);
digitalWrite(encoder0PinD, HIGH); // подключить подтягивающий резистор
pinMode(encoder0PinE, INPUT);
digitalWrite(encoder0PinE, HIGH); // подключить подтягивающий резистор
pinMode(encoder0PinF, INPUT);
digitalWrite(encoder0PinF, HIGH); // подключить подтягивающий резистор
pinMode(encoder0PinG, INPUT);
digitalWrite(encoder0PinG, HIGH); // подключить подтягивающий резистор
pinMode(encoder0PinH, INPUT);
digitalWrite(encoder0PinH, HIGH); // подключить подтягивающий резистор
attachInterrupt(0, doEncoderA, FALLING); // настроить прерывание interrupt 0 на pin 2
attachInterrupt(1, doEncoderB, FALLING); // настроить прерывание interrupt 0 на pin 3
Serial.begin (115200);
}
void loop()
//Кнопка 1
{
if(digitalRead(encoder0PinC)==LOW)
{
bytes[1]=8;
Serial.write( bytes,2);
while(digitalRead(encoder0PinC)==LOW)
bytes[1]=7;
}
//Кнопка 2
if(digitalRead(encoder0PinD)==LOW)
{
bytes[1]=10;
Serial.write( bytes,2);
while(digitalRead(encoder0PinD)==LOW)
bytes[1]=9;
}
//Кнопка 3
if(digitalRead(encoder0PinE)==LOW)
{
bytes[1]=12;
Serial.write( bytes,2);
while(digitalRead(encoder0PinE)==LOW)
bytes[1]=11;
}
//Кнопка 4
if(digitalRead(encoder0PinF)==LOW)
{
bytes[1]=14;
Serial.write( bytes,2);
while(digitalRead(encoder0PinF)==LOW)
bytes[1]=13;
}
//Кнопка 5
if(digitalRead(encoder0PinG)==LOW)
{
bytes[1]=16;
Serial.write( bytes,2);
while(digitalRead(encoder0PinG)==LOW)
bytes[1]=15;
}
//Кнопка 6
if(digitalRead(encoder0PinH)==LOW)
{
bytes[1]=18;
Serial.write( bytes,2);
while(digitalRead(encoder0PinH)==LOW)
bytes[1]=17;
}
}
// обработка прерывания
void doEncoderA()
{
if(digitalRead(encoder0PinB)==HIGH){bytes[0]=1;}else{bytes[0]=2;}
Serial.write( bytes,1);
}
// обработка прерывания
void doEncoderB()
{
if(digitalRead(encoder0PinA)==HIGH){bytes[0]=2;}else{bytes[0]=1;}
Serial.write( bytes,1);
}
Последний раз редактировалось Chip; 18.03.2012 в 19:35.
Ну а пояснения или схема есть?
скетч и схема от сюда http://www.compcar.ru/forum/showthread.php?t=5148 добавлены еще 5 кнопок
ссылка на проект http://pccar.ru/showthread.php?t=156...light=chrysler
АУ кто нибудь поможет
А если без твоих исправлений , скетч работает?
тоже дребезг, кондеры стоят. Заметил когда пальцем держишь за УСБ разъем стабильно работает
Chip Ау помогите
Вариантов не много:
1-неправильно подключен энкодер
2-емкость кондеров не достаточная
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)