И так, с начала:
в первом сообщении я пишу о проблеме (собственно это первостепенное, что меня интересует). Подробно написал, что отправляю одно, а приходит другое, яркость не меняется. Код выложил. Чуть позже я пробую тоже самое, но из более раннего компилятора, и что мы видим? О боже! приходит то, что отправляю!, но яркость не меняется! Мой вопрос - ПОЧЕМУ? Да, вы можете приводить примеры, что char var = '1'; и char var = 1; это совершенно разные вещи... Но почему с другой железкой этот код работает, а с этой нет, никто не объяснил до сих пор. То есть делаю вывод, что для Atmega328 это разные вещи, а для Atmega1280 одно и тоже, так как она работает с этим кодом. Ну а чо, вразумительно никто другого не объяснил.
А теперь к проблеме №2:
noonv писал(а):там же написано:
Я не стал заморачиваться и назначил для управления всем нам известные кнопки “A”,”S”,”D”,”W”, то есть если например МК получает байт «W» (0x57) он установит единицу на ноге к которой припаян провод отвечающий за движение вперед и т.д.
...
скрипты обрабатывающие нажатие кнопок в вебинтерфейсе теперь посылают “A”,”S”,”D”,”W” в зависимости от нажатой кнопки. А сам скрипт который занимается отправкой перенаправлен на внутренний UART роутера.
скрипт посылает в порт
символ, а значит и ловить нужно символ.
автор даже это явно указал -
«W» (0x57)
Sirocco писал(а):Мне это ни о чём не говорит. Я в своём коде этого не вижу.
Да, я пытаюсь ТУПО скопировать проект, как там описано, и гарантированно, что всё работает. И отправляется там символ, и скетч там совершенно другой, не имеющий отношения к первому, и ловит этот скетч тоже символ.
- Код: Выделить всё • Развернуть
int led = 13;
boolean laight = 0;
int incomingByte = 0;
int action = 0;
void setup() {
Serial.begin(57600);
pinMode(13, OUTPUT);
pinMode(4, OUTPUT); //light
pinMode(5, OUTPUT); // шим 1
pinMode(6, OUTPUT); // шим 2
pinMode(7, OUTPUT); // 11
pinMode(8, OUTPUT); // 12
pinMode(11, OUTPUT); // 21
pinMode(12, OUTPUT); // 22
}
void loop() {
//Serial.print("1");
if (Serial.available() > 0) { //если есть доступные данные// считываем байт
incomingByte = Serial.read();
// отсылаем то, что получили
digitalWrite(13, HIGH);
if(incomingByte == 97) // A
action = 7;
if(incomingByte == 100) // D
action = 8;
if(incomingByte == 115) // S
action = 11;
if(incomingByte == 119) // W
action = 12;
if(incomingByte == 108) // L
laight=!laight;
digitalWrite(4, laight);
//analogWrite(8, 255);
//analogWrite(9, 255);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(action, HIGH);
delay(250);
digitalWrite(action, LOW);
action = 0;
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(13, LOW);
Serial.print("250: ");
Serial.println(incomingByte, DEC);
}
}
А если точнее, то должен ловить, но ему чисто пофиг, я любой символ отправляю, и все описанные порты на какое то время выдают единицу на выходе, а не тот, который должен исходя из кода. И передача длиться до пяти секунд. Откуда-то берётся куча мусора, которая пробегает через RxTx.
Кстати, скрипт отправки символа тоже есть, не я его писал. И вобще, мне бы с первой проблемой разобраться, а уж на основе скетча "Dimmer" я бы сам написал тот скетч, который мне нужен.