Ткните пожалуйста, что не так.
- Войдите на сайт для отправки комментариев
Втр, 10/09/2013 - 21:00
Уже все испробовал, в терминале показывает 1000 но условие не выполняет, подскажите с чем я затупил )))
#include <SoftwareSerial.h>
SoftwareSerial SerialBT( 2, 3); // RX, TX
int red = 5;
int green = 6;
int blue = 7;
void setup()
{
pinMode(5,OUTPUT);
pinMode(6,OUTPUT);
pinMode(7,OUTPUT);
Serial.begin(9600); // стандартный
SerialBT.begin(9600); // новый на другой скорости
}
void loop()
{
while (SerialBT.available() > 1);
int val = SerialBT.parseInt();
//int val = 1000;
Serial.println(val);
if (val == 1000)
{
digitalWrite(red,HIGH);
}
if (val = 1001)
{
digitalWrite(red,LOW);
}
}
if (val = 1001) { digitalWrite(red,LOW); } }
Вот это
Столько всего перепробовал, думал только о приеме, даже как-то неловко. )))
Сибки
И подумайте еще над этой строкой:
while(SerialBT.available() > 1);Зачем она? и что произойдет с вашей программой если в приемном буфере окажется больше одного байта?
насколько я понял эта строчка ждет пока не придут данные больше 1
или это не так работает?
изучаю, ардинька обрастает устойствами.
буду рад если поправите и укажите куда смотреть
это немного выросший код ))
#include <LiquidCrystal.h> LiquidCrystal lcd(4, 8, 9, 10, 11, 12); #include <SoftwareSerial.h> SoftwareSerial SerialBT( 2, 3); // RX, TX int red = 5; int green = 6; int blue = 7; int val; void setup() { lcd.begin(16,2); pinMode(5,OUTPUT); pinMode(6,OUTPUT); pinMode(7,OUTPUT); Serial.begin(9600); // стандартный SerialBT.begin(9600); // новый на другой скорости } void loop() { //while (SerialBT.available() > 1); val = SerialBT.parseInt(); //int val = 1000; if (Serial.println(val)>0); if (val == 11) { digitalWrite(red,HIGH); lcd.setCursor(0,0); lcd.print("Red on "); } if (val == 12) { digitalWrite(red,LOW); lcd.setCursor(0,0); lcd.print("Red off"); } if (val == 21) { digitalWrite(blue,HIGH); lcd.setCursor(8,0); lcd.print("Blue on "); } if (val == 22) { digitalWrite(blue,LOW); lcd.setCursor(8,0); lcd.print("Blue off"); } if (val == 31) { digitalWrite(green,HIGH); lcd.setCursor(0,1); lcd.print("Green on "); } if (val == 32) { digitalWrite(green,LOW); lcd.setCursor(0,1); lcd.print("Green off"); } }какая замечательная строчка!
а что она дожна делать?
switch case - авось пригодится
насколько я понял эта строчка ждет пока не придут данные больше 1
или это не так работает?
Вот строки, которые ждут прихода одного байта:
while(SerialBT.available() < 1);или
while(SerialBT.available() == 0);или
while(!SerialBT.available());в вашем же случае если в буфере окажется более одного байта ваша программа зависнет.
опять учудил, даже не заметил что написал
if (Serial.available(val)>0); <- так и должно было быть, СИБКИ, программа не висла, но работала с ощутимой задержкой.
в смысле я хотел написать -> if (Serial.available(val)==0);
switch case - авось пригодится
Этой функции еще не видел, спасибо.
в смысле я хотел написать -> if (Serial.available(val)==0);
в смысле я хотел написать -> if (Serial.available(val)==0);
нужно наверно отдохнуть ))))
простите, темы по датчику температуры 18b20 никто не видел?
не могу понять как получить адрес, в смысле скетчем из примера его считывает но не понимаю как.