Прощу вашей помощи (объясните как это делается)
- Войдите на сайт для отправки комментариев
Втр, 13/01/2015 - 16:35
Объяните как можно это осуществить. Пытаюсь вывести на i2c lcd 1602 сообщение когда пришло значитение с sirial порта значение на включение реле вот в этом скетче :
переменная i пришла (int i = Serial.read()-48;) ардуино считал его и запустил каманду согласно значению.
вот тогда то мне и надо поймать его и выдать сообщение что типо он включен. Так как lcd 1602 имеет всего 16 значений в строке, решил выводить инфу о состоянии по 4 значения R(n)++ если включен и R(n)-- если выключен.
Помогите пожалуйста. Искал инфу по этому весь вечер но так и не нашел как это сделать (может так искал, возможно) ведь практики мало в этом :(
if (Serial.available() > 0) {
int i = Serial.read()-48;
if (i == 1)digitalWrite(Light_1, !digitalRead(Light_1));
if(Light_1 == HIGH); // Проверяем работает ли порт реле и выводим сообщение на lcd
{
lcd.setCursor(0, 1);
lcd.print("R1++");
}
if (Light_1 == LOW);
{
lcd.setCursor(0, 1);
lcd.print("R1--");
}
if (i == 2)digitalWrite(Cooler_2, !digitalRead(Cooler_2));
if(Cooler_2 == HIGH); // Проверяем работает ли порт реле и выводим сообщение на lcd
{
lcd.setCursor(4, 1);
lcd.print("R2++");
}
if (Cooler_2 == LOW);
{
lcd.setCursor(4, 1);
lcd.print("R2--");
}
if (i == 3)digitalWrite(Pump_3, !digitalRead(Pump_3));
if(Pump_3 == HIGH); // Проверяем работает ли порт реле и выводим сообщение на lcd
{
lcd.setCursor(8, 1);
lcd.print("R3++");
}
if (Pump_3 == LOW);
{
lcd.setCursor(8, 1);
lcd.print("R3--");
}
if (i == 4)digitalWrite(Aero_4, !digitalRead(Aero_4));
if(Aero_4 == HIGH); // Проверяем работает ли порт реле и выводим сообщение на lcd
{
lcd.setCursor(12, 1);
lcd.print("R4++");
}
if (Aero_4 == LOW);
{
lcd.setCursor(12, 1);
lcd.print("R4--");
}
}
Для начала, проверку переписать:
А вообще, так понятней:
if( i == 1 ) { int Val = !digitalRead( Light_1 ); digitalWrite( Light_1, Val ); lcd.setCursor( 0, 1 ); lcd.print( Val ? "R1++" : "R1--" ); }Это так долно выглядеть?
if (Serial.available() > 0) { int i = Serial.read()-48; if (i == 1)digitalWrite(Light_1, !digitalRead(Light_1)); if( i == 1 ); { int Val = !digitalRead( Light_1 ); digitalWrite( Light_1, Val ); lcd.setCursor( 0, 1 ); lcd.print( Val ? "R1++" : "R1--" ); } if (i == 2)digitalWrite(Cooler_2, !digitalRead(Cooler_2)); if (i == 3)digitalWrite(Pump_3, !digitalRead(Pump_3)); if (i == 4)digitalWrite(Aero_4, !digitalRead(Aero_4)); }или не туда вставляю код?
if (Serial.available() > 0) { int i = Serial.read()-48; if (i == 1)digitalWrite(Light_1, !digitalRead(Light_1)); { if(i == 1); { int Val = !digitalRead(Light_1); digitalWrite( Light_1, Val ); lcd.setCursor( 0, 1 ); lcd.print( Val ? "R1++" : "R1--" ); } } if (i == 2)digitalWrite(Cooler_2, !digitalRead(Cooler_2)); if (i == 3)digitalWrite(Pump_3, !digitalRead(Pump_3)); if (i == 4)digitalWrite(Aero_4, !digitalRead(Aero_4)); }Третья строка - лишняя.
Спасибо большое) работает)))
наконец я избавился от этой функции
Всю нось с ней ...ся( не мог не чего придумать)
if (Serial.available() > 0) { int i = Serial.read()-48; if(i == 1); { int Val = !digitalRead(Light_1); digitalWrite( Light_1, Val ); lcd.setCursor( 0, 1 ); lcd.print( Val ? "R1--" : "R1++" ); }так все работает как и хотел) теперь надо расписать это на 4 реле :)
Не пойму что не так, заливаю код и кода подаю на порт цифру 1 включается все (при этом пишет на lcd что R(n)++ тобиш все включены), так же как и 2,3 и даже 4 :(
if (Serial.available() > 0) { int i = Serial.read()-48; if(i == 1); { int Val = !digitalRead(Light_1); digitalWrite( Light_1, Val ); lcd.setCursor( 0, 1 ); lcd.print( Val ? "R1--" : "R1++" ); } if(i == 2); { int Val = !digitalRead(Cooler_2); digitalWrite( Cooler_2, Val ); lcd.setCursor( 4, 1 ); lcd.print( Val ? "R1--" : "R1++" ); } if(i == 3); { int Val = !digitalRead(Pump_3); digitalWrite( Pump_3, Val ); lcd.setCursor( 8, 1 ); lcd.print( Val ? "R1--" : "R1++" ); } if(i == 4); { int Val = !digitalRead(Aero_4); digitalWrite( Aero_4, Val ); lcd.setCursor( 12, 1 ); lcd.print( Val ? "R1--" : "R1++" ); } }Все понял исправил и получил итог :) вся бида была в том что стояли ; в " if(i == 1); " убрал и все заработало.
if (Serial.available() > 0) { int i = Serial.read()-48; if(i == 1); { int Val = !digitalRead(Light_1); digitalWrite( Light_1, Val ); lcd.setCursor( 0, 1 ); lcd.print( Val ? "R1--" : "R1++" ); }Сам код теперь состоит так:
if (Serial.available() > 0) { int i = Serial.read()-48; if(i == 1) { int Val = !digitalRead(Light_1); digitalWrite(Light_1, Val); lcd.setCursor( 0, 1 ); lcd.print( Val ? "R1--" : "R1++" ); } if(i == 2) { int Val = !digitalRead(Cooler_2); digitalWrite(Cooler_2, Val); lcd.setCursor( 4, 1 ); lcd.print( Val ? "R1--" : "R1++" ); } if(i == 3) { int Val = !digitalRead(Pump_3); digitalWrite(Pump_3, Val); lcd.setCursor( 8, 1 ); lcd.print( Val ? "R1--" : "R1++" ); } if(i == 4) { int Val = !digitalRead(Aero_4); digitalWrite(Aero_4, Val); lcd.setCursor( 12, 1 ); lcd.print( Val ? "R1--" : "R1++" ); } }