PWM через Serial read
- Войдите на сайт для отправки комментариев
Вс, 30/11/2014 - 13:03
Подскажите кусок кода, который мог бы передавать значение пришедшее в ком порт в функцию pwm.
Тоесть хочу передать в коп порт ардуино фразу R155, а она должна выполнить это:
analogWrite(10, RED);
где 10 - номер пина, RED значение шим, в данном случае равное 155.
Накидал такой код:
int RED = 0; void setup(){ Serial.begin(57600); pinMode (10, OUTPUT); } void loop() { if (Serial.available()>3) { uint8_t inByte = Serial.read(); if(inByte=='r') { RED = Serial.read(); analogWrite(10, RED); Serial.print(RED); } } }
Но он не работает. Так как символы каким-то чудом преобразуются в коды символов, и в RED пишется полная чушь.
Как осилить? Когда-то раньше я видел реализацию, но так и не смог нагуглить.
http://arduino.cc/en/Tutorial/ReadASCIIString
У меня оно не работает. Просто не работает. Значения пинов не меняются, в ком порт ничего не выводит. Отсылаю, например, это: 100,111,200
peek() проверяет следующий байт сериала, не читая его (не убирая из очереди)
Суть идеи - ждём некий байт, смотрим чё за буква. Буква обозначает нужный цвет в RGB. Потом читаем три байта, если читаются. Если прочиталось меньше, двигаем, так чтобы единица оказалась справа. Если читается что-то отличающееся от цифр или больше нету, считаем что ничего читать не надо. По дефолту нули. Потом остаётся умножить и записать в нужный выход. Номер выхода указали, когда читали букву.
std, пока не компилируется, куча ошибок. Попробую поправить.
Ваш код:
Отсылаю в порт r111, получаю в ответ 210530210531210530, с пинами ничего не происходит.
На всякий случай: Arduino IDE 1.0.5-r2, arduino Pro mini
Во, вроде работает: