int data = 0; // присылаемые данные int reading = 8; // пин, который считывает значение с кнопки ` int val = 0; // значение с реостата boolean butwheather=0; // счетчик запуска меню boolean but = 0; // значение кнопки до нажатия boolean counter = 0; // еще один счетчик... boolean currentButton = 0; // значение кнопки после нажатия boolean zum = 0; // счетчик звука зуммера String data1; // приходимые данные String data2; String data3; String data4; String data5; #define BUZZER_PIN 7 // пин для зуммера #include // библиотека для жк-дисплея LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // выбираем 6 пинов для подключения void setup() { lcd.begin(16, 2); Serial.begin(9600); Serial.setTimeout(40); // При вызове parseInt() задержка ожидания последующего символа по умолчанию 1 секунда. // Функцией setTimeout() можно уменьшить эту задержку. Например на 40 миллисекунд, setTimeout(40);. pinMode(reading,INPUT); // } void signaling() // функция для звучания зуммера { tone(BUZZER_PIN, 50, 300); delay(300); zum+=1; } boolean Button( boolean got ) // функция, которая принимает предыдущее значение нажатия кнопки и отправляет текущие значение { boolean current = digitalRead(reading); if( !got == current) { delay(10); current = digitalRead(reading); } return(current); } void menu () // функция выводы на жк-дислей меню и отправки команды { while(butwheather==0) { if ( val>=0 && val<=270) { zum = 0; lcd.clear(); lcd.setCursor(0, 0); lcd.print("Rostov-on-Don"); while (val>=0 && val<=270) { currentButton = Button(but); if (currentButton == 0 && but ==0) { Serial.println("Rostov-na-Donu"); butwheather=1; break; } but = currentButton; val = analogRead(A0); } if (zum==0) { signaling(); } } if ( val>=271 && val<=700) { zum = 0; lcd.clear(); lcd.setCursor(0, 0); lcd.print("Saint Petersburg"); while (val>=271 && val<=700) { currentButton = Button(but); if (currentButton == 0 && but ==0) { Serial.println("Saint Petersburg"); butwheather=1; break; } but = currentButton; val = analogRead(A0); } if (zum==0) { signaling(); } } if ( val>=701 && val<=1023) { zum = 0; lcd.clear(); lcd.setCursor(0, 0); lcd.print("Moscow"); while (val>=701 && val<=1023) { currentButton = Button(but); if (currentButton == 0 && but ==0) { Serial.println("Moscow"); butwheather=1; break; } but = currentButton; val = analogRead(A0); } if (zum==0) { signaling(); } } } } void information() // функция приема данных с платы { data1=Serial.parseInt(); data2=Serial.parseInt(); data3=Serial.parseInt(); data4=Serial.parseInt(); data5=Serial.parseInt(); } void readout() // функция вывода данных на жк-дисплей с помощью значения с потенциометра { val = analogRead(A0); while(counter==0) { if(val>=0 && val<=204) { lcd.clear(); lcd.setCursor(0,0); lcd.print("Temp:"); lcd.print(data1); lcd.print("C"); lcd.setCursor(0,1); lcd.print("Wind:"); lcd.print(data2); lcd.print("m/s"); while(val>=0 && val<=204) val = analogRead(A0); } if(val>=205 && val<=409) { lcd.clear(); lcd.setCursor(0,0); lcd.print("Wind:"); lcd.print(data2); lcd.print("m/s"); lcd.setCursor(0,1); lcd.print("Lat:"); lcd.print(data3); lcd.print("`"); while(val>=205 && val<=409) val = analogRead(A0); } if(val>=410 && val<=614) { lcd.clear(); lcd.setCursor(0,0); lcd.print("Lat:"); lcd.print(data3); lcd.print("`"); lcd.setCursor(0,1); lcd.print("Lon:"); lcd.print(data4); lcd.print("`"); while(val>=410 && val<=614) val = analogRead(A0); } if(val>=615 && val<=819) { lcd.clear(); lcd.setCursor(0,0); lcd.print("Lon:"); lcd.print(data4); lcd.print("`"); lcd.setCursor(0,1); lcd.print("Humdi:"); lcd.print(data5); lcd.print("%"); while(val>=615 && val<=819) val = analogRead(A0); } if(val>=820 && val<=1023) { lcd.clear(); lcd.setCursor(0,0); lcd.print("Exit?"); while(val>=820 && val<=1023) { val = analogRead(A0); currentButton = Button(but); if (currentButton == 0 && but ==0) { counter+=1; break; } but = currentButton; } } } counter=0; } void loop() { val = analogRead(A0); // читаем значение реостата и выбираем режим в зависимости от положения ручки menu(); // выбираем один из трех городов if (Serial.available()> 0) // ждем, пока данных придут { information(); // считываем данные readout(); // показываем присланные данные butwheather=0; // онулируем счетчик delay(400); // немного ждем перед следующим запросом } }