int action = 0;
void setup() {
Serial.begin(115200);
pinMode(4, OUTPUT); // направление М1
pinMode(5, OUTPUT); // скорость М1
pinMode(7, OUTPUT); // скорость М2
pinMode(6, OUTPUT); // направление М2
}
void loop() {
if (Serial.available() > 0){
//Serial.print("1");
int inByte = Serial.read();
// отсылаем то, что получили
switch (inByte){
case 's':
digitalWrite(4,HIGH);
analogWrite(5,128);
analogWrite(6,128);
digitalWrite(7,LOW);
break;
case 'w':
digitalWrite(4, LOW);
analogWrite(5,128);
analogWrite(6,128);
digitalWrite(7, HIGH);
break;
case 'a':
digitalWrite(4, HIGH);
analogWrite(5, 128);
analogWrite(6, 128);
digitalWrite(7, HIGH);
break;
case 'd':
digitalWrite(4,LOW);
analogWrite(5,128);
analogWrite(6,128);
digitalWrite(7,LOW);
break;
case 'q':
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
break;
}
Serial.print("'");
if(inByte>=32)Serial.write(inByte);
Serial.print("' - ");
Serial.println(inByte,DEC);
}
}
С монитором работает, спасибо огромное что направили) буду завтра его с TPlink-ом дружить. А на счет 13го пина если скажется положительно на работе перепаяю
Не стоит у Вас шимы на 5, 6 ноге, а у меги это 3, 4 таймер оба 16-ти битные. Так что все нормально.
к тому же analogWrite(); их всеравно приводит к 8 битам.
PWM: 2 to 13 and 44 to 46. Provide 8-bit PWM output with the analogWrite() function.
ps: у вас не правильно написаны ремарки 4,7 направление 5,6 скорость
и в case 'q': замените digitalWrite(); 5,6 - LOW на analogWrite();5,6 - 0; это необходимо для остановки таймеров. digitalWrite(); просто отключит пин от таймера, а analogWrite(); остановит таймер.
я нашел ваш шилд там есть 2 варианта перемычек PLL и PWM вам необходимо выбрать PWM для данной программы. Там прямо на шилде указано Е1-5,М1-4,Е2-6,М2-7 так вот у вас Е должны быть analogWrite();
Я его изначально в PWM переключил, уже две недели тыркаюсь с шасси) перемычки изучил за это время. Нужно будет с сервоприводом еще разобраться, и команды в веб интерфейфе поменять...
int action = 0; void setup() { Serial.begin(115200); pinMode(4, OUTPUT); // направление М1 pinMode(5, OUTPUT); // скорость М1 pinMode(7, OUTPUT); // скорость М2 pinMode(6, OUTPUT); // направление М2 } void loop() { if (Serial.available() > 0){ //Serial.print("1"); int inByte = Serial.read(); // отсылаем то, что получили switch (inByte){ case 's': digitalWrite(4,HIGH); analogWrite(5,128); analogWrite(6,128); digitalWrite(7,LOW); break; case 'w': digitalWrite(4, LOW); analogWrite(5,128); analogWrite(6,128); digitalWrite(7, HIGH); break; case 'a': digitalWrite(4, HIGH); analogWrite(5, 128); analogWrite(6, 128); digitalWrite(7, HIGH); break; case 'd': digitalWrite(4,LOW); analogWrite(5,128); analogWrite(6,128); digitalWrite(7,LOW); break; case 'q': digitalWrite(4, LOW); digitalWrite(5, LOW); digitalWrite(6, LOW); digitalWrite(7, LOW); break; } Serial.print("'"); if(inByte>=32)Serial.write(inByte); Serial.print("' - "); Serial.println(inByte,DEC); } }С монитором работает, спасибо огромное что направили) буду завтра его с TPlink-ом дружить. А на счет 13го пина если скажется положительно на работе перепаяю
Не стоит у Вас шимы на 5, 6 ноге, а у меги это 3, 4 таймер оба 16-ти битные. Так что все нормально.
к тому же analogWrite(); их всеравно приводит к 8 битам.
PWM: 2 to 13 and 44 to 46. Provide 8-bit PWM output with the analogWrite() function.
ps: у вас не правильно написаны ремарки 4,7 направление 5,6 скорость
и в case 'q': замените digitalWrite(); 5,6 - LOW на analogWrite();5,6 - 0; это необходимо для остановки таймеров. digitalWrite(); просто отключит пин от таймера, а analogWrite(); остановит таймер.
я по мануалу к шилду выставил, и от ремарок плясал расставляя значения кейсов
я нашел ваш шилд там есть 2 варианта перемычек PLL и PWM вам необходимо выбрать PWM для данной программы. Там прямо на шилде указано Е1-5,М1-4,Е2-6,М2-7 так вот у вас Е должны быть analogWrite();
Я его изначально в PWM переключил, уже две недели тыркаюсь с шасси) перемычки изучил за это время. Нужно будет с сервоприводом еще разобраться, и команды в веб интерфейфе поменять...
я бы написал так:
int action = 0; void setup() { Serial.begin(115200); // для шилда PWM pinMode(4, OUTPUT); // направление М1 pinMode(5, OUTPUT); // скорость E1 pinMode(7, OUTPUT); // направление М2 pinMode(6, OUTPUT); // скорость E2 } void loop() { if (Serial.available() > 0){ //Serial.print("1"); int inByte = Serial.read(); // отсылаем то, что получили switch (inByte){ case 's': digitalWrite(4,HIGH); //правое вращение analogWrite(5,128); // половина скорости analogWrite(6,128); // половина скорости digitalWrite(7,LOW); // левое вращение break; case 'w': digitalWrite(4, LOW); // левое вращение analogWrite(5,128); // половина скорости analogWrite(6,128); // короче скорость у вас одинаковая digitalWrite(7, HIGH); // правое вращение break; case 'a': digitalWrite(4, HIGH); // правое вращение analogWrite(5, 128); analogWrite(6, 128); digitalWrite(7, HIGH); // правое вращение break; case 'd': digitalWrite(4,LOW); // левое вращение analogWrite(5,128); analogWrite(6,128); digitalWrite(7,LOW); // левое вращение break; case 'q': digitalWrite(4, LOW); analogWrite(5, 0); // стоп 1 -вый канал analogWrite(6, 0); // стоп 2 -ой канал digitalWrite(7, LOW); // не имеет значения так как каналы выкл break; } ////////// тестовый вывод Serial.print("'"); if(inByte>=32)Serial.write(inByte); Serial.print("' - "); Serial.println(inByte,DEC); ///////////////////////////////// } }