Skocz do zawartości

Bonkers

Użytkownicy
  • Zawartość

    31
  • Rejestracja

  • Ostatnio

Reputacja

1 Neutralna

O Bonkers

  • Ranga
    3/10

Informacje

  • Płeć
    Mężczyzna
  • Lokalizacja
    Tychy
  • Zainteresowania
    motoryzacja, informatyka, elektronika
  • Zawód
    Student

Ostatnio na profilu byli

Blok z ostatnio odwiedzającymi jest wyłączony i nie jest wyświetlany innym użytkownikom.

  1. Dziękuje wszystkim za tak ogromną reakcje na moją pytanie . Nie spodziewałem się, że wywiąże się z tego tak ciekawa dyskusja . Przy okazji bardzo ciekawe środowisko, bardziej rozbudowane niż Arduino IDE, może trochę mniej niż AS, ale daje rade. Poza tym bez debuggera, programatora to bardziej się opłaca z niego korzystać niż z AS. Postanowiłem, że póki co nadal będę pisał programy w C++ na Arduino, równocześnie ucząc się podstaw C na AVRy pisząc jakieś proste programy, do obsługi led'ów, wyświetlaczy, przycisków itd. Nadal uważam, że pisanie w C ma więcej plusów niż C++ jeśli chodzi o mikrokontrolery i przykłady, które przytaczaliście. Może nawet zacznę pisać w ASM, bo z tego co wiem to przypomina to język STL do PLCków, z którymi też mam aktualnie do czynienia. W przyszłości jak już ogarnę C na AVR, zabiorę się za ARM, STM, bo rzeczywiście jeśli chodzi o takie hobbystyczne sprawy to AVRy wystarczają, ale jak się już chce poważne rzeczy robić to trzeba ogarnąć resztę.
  2. No właśnie zazwyczaj żeby przerobić jedną bibliotekę, trzeba przerabiać następną, następną itd... Umożliwia, też próbowałem pisać w C++, ale tu z kolei, również trzeba przerabiać niektóre biblioteki, w tym główną "Arduino.h". Jeśli dobrze rozumiem nie ma innego sposobu, niż przerabianie bibliotek? Czy może jednak istnieje jakaś strona, która posiada biblioteki w C dla konkretnych urządzeń przeznaczonych do Arduino?
  3. Witam, W ostatnim czasie zacząłem interesować się programowaniem w Atmel Studio zamiast w Arduino IDE, ponieważ Atmel Studio ma więcej opcji niż IDE. Wiem, że istnieją takie opcje programowania Arduino po przez to środowisko za pomocą dodatku vMicro lub z poziomu tworzenia nowego projektu "Create Arduino Project from sketch". Jednak mnie najbardziej interesuje pisanie programów w "zwykłym C" tak jak dla innych avr'ów. I w związku z tym moje pytanie brzmi, czy da się w szybki sposób dodać lub przerobić biblioteki z Arduino do projektu, pisanym w języku C w Atmel Studio?
  4. Problem rozwiązany . Okazało się że główną przyczyną dlaczego to nie działało nie był kod, a zasilanie arduino. Dzięki @ethanak @krzychb za pomoc.
  5. @ethanak Poprawiłem i dalej nic if (cliente.connect("www.*******.cba.pl", 80)) { //Connecting at the IP address and port we saved before if(resume_disp == 1 || resume_disp == 2) { Serial.println("connected"); cliente.print("GET /wr_data.php?"); //Connecting and Sending values to database cliente.print("temperature="); cliente.print(tempG, 1); cliente.print("&humidity="); cliente.print(humG); cliente.print("&pressure="); cliente.print(pressG); cliente.print("&temperature_out="); cliente.print(data.temperature, 1); cliente.print("&humidity_out="); cliente.print(data.humidity); cliente.print("&insolation="); cliente.print(data.insolation); cliente.print("&weather="); cliente.print(readWeatherEN(data)); cliente.println( " HTTP/1.1"); cliente.println( "Host: www.*******.cba.pl" ); cliente.println( "Connection: close" ); cliente.println(); } } Próbowałem też zrobić tak jak @krzychb radził, ale też ni widać efektu if (cliente.connect("www.*********.cba.pl", 80)) { //Connecting at the IP address and port we saved before if(resume_disp == 1 || resume_disp == 2) { pdata = "temperature="+(int)tempG; pdata += "&humidity="+humG; pdata += "&pressure="+pressG; pdata += "&temperature_out=" + (int)data.temperature; pdata += "&humidity_out=" + data.humidity; pdata += "&insolation=" + data.insolation; pdata += "&weather=" + readWeatherEN(data); Serial.println("connected"); cliente.print("POST /add.php HTTP/1.1\r\n"); cliente.print("Host: www.*********.cba.pl\r\n"); // SERVER ADDRESS HERE TOO cliente.print("Content-Type: application/x-www-form-urlencoded\r\n"); cliente.print("Content-Length: "); cliente.print(pdata.length() + (String)"\r\n" + (String)"Connection: close\r\n\r\n"); cliente.print(pdata);
  6. Póki co, zrobiłem to w ten sposób i dalej nie działa if (cliente.connect("www.********.cba.pl", 80)) { //Connecting at the IP address and port we saved before if(resume_disp == 1 || resume_disp == 2) { Serial.println("connected"); cliente.print("GET /wr_data.php?"); //Connecting and Sending values to database cliente.print("temperature="); cliente.print(tempG, 1); cliente.print("&humidity="); cliente.print(humG); cliente.print("&pressure="); cliente.print(pressG); cliente.print("&temperature_out="); cliente.print(data.temperature, 1); cliente.print("&humidity_out="); cliente.print(data.humidity); cliente.print("&insolation="); cliente.print(data.insolation); cliente.print("&weather="); cliente.print(readWeatherEN(data)); cliente.println( " HTTP/1.1\r\n"); cliente.println( "Host: www.********.cba.pl\r\n" ); cliente.println( "Connection: close\r\n" ); cliente.println("\r\n"); }
  7. Witam, Mam problem z przesyłaniem informacji do shostowanej bazy danych. Bazę danych uruchomiłem na hostingu cba.pl, wcześniej przesyłałem dane do lokalnego serwera postawionego na xamppie i nie było z tym problemu. Całą procedurę wykonałem na podstawie tego co jest napisane w tym poradniku: https://electronicshobbyists.com/logging-data-to-database-using-arduino-ethernet-shield/ . Czy w podobny sposób można wykonać zapisywanie informacji do bazy na stronie, bo nie umiem jakoś do tego dojść czy to może wogóle działać. Wszystkie pliki .php, które wrzuciłem na stronę działają prawidłowo gdy się po przez nie wpisuje dane ręcznie. Jeżeli jednak chce je wpisać za pomocą arduino, to wtedy nie działa, chociaż pokazuje że jest połączenie. Próbowałem to też wykonać za pomocą tego poradnika: https://www.instructables.com/id/PART-1-Send-Arduino-data-to-the-Web-PHP-MySQL-D3js/ , ale też z marnym skutkiem. Miał ktoś kiedyś podobny problem? Poniżej wklejam fragmenty kodów dla obu przypadków. int SendToDatabase() { unsigned long cur_time = millis(); static unsigned long last_check; if(fabs(cur_time - last_check) >= 2*MIN) { if (cliente.connect("www.********.cba.pl", 80)) { //Connecting at the IP address and port we saved before if(resume_disp == 1 || resume_disp == 2) { Serial.println("connected"); cliente.print("GET /wr_data.php?"); //Connecting and Sending values to database cliente.print("temperature="); cliente.print(tempG, 1); cliente.print("&humidity="); cliente.print(humG); cliente.print("&pressure="); cliente.print(pressG); cliente.print("&temperature_out="); cliente.print(data.temperature, 1); cliente.print("&humidity_out="); cliente.print(data.humidity); cliente.print("&insolation="); cliente.print(data.insolation); cliente.print("&weather="); cliente.println(readWeatherEN(data)); } else { Serial.println("connected"); cliente.print("GET /wr_data.php?"); //Connecting and Sending values to database cliente.print("temperature="); cliente.print(tempG, 1); cliente.print("&humidity="); cliente.print(humG); cliente.print("&pressure="); cliente.println(pressG); } last_check = cur_time; cliente.stop(); //Closing the connection resume_connection = 1; return 1; } else { // if you didn't get a connection to the server: Serial.println("disconnected"); last_check += 5*SEK; resume_connection = 0; return ERR; } } return 0; } int SendToDatabase() { unsigned long cur_time = millis(); static unsigned long last_check; if(fabs(cur_time - last_check) >= 1*MIN) { if (cliente.connect("http://*********.cba.pl", 80)) { //Connecting at the IP address and port we saved before if(resume_disp == 1 || resume_disp == 2) { pdata = "temperature="+(int)tempG; pdata += "&humidity="+humG; pdata += "&pressure="+pressG; pdata += "&temperature_out=" + (int)data.temperature; pdata += "&humidity_out=" + data.humidity; pdata += "&insolation=" + data.insolation; pdata += "&weather=" + readWeatherEN(data); Serial.println("connected"); cliente.println("POST /add.php HTTP/1.1"); cliente.println("Host: http://*********.cba.pl"); // SERVER ADDRESS HERE TOO cliente.println("Content-Type: application/x-www-form-urlencoded"); cliente.print("Content-Length: "); cliente.println(pdata.length()); cliente.print(pdata); } last_check = cur_time; cliente.stop(); //Closing the connection resume_connection = 1; return 1; } else { // if you didn't get a connection to the server: Serial.println("disconnected"); last_check += 5*SEK; resume_connection = 0; return ERR; } } return 0; }
  8. Witam, Mam pewien problem z komunikacją pomiędzy dwoma mikrokontrolerami, z powodów finansowych określonych projekcie muszę wykonać go na klonach arduino. W tym celu podłączyłem do każdego arduino moduł sieciowy nRF24L01, zgodnie ze schematami występującymi na różnych tutorialach w necie. Tak aby z Nano zrobić nadajnik, a z Uno odbiornik. Do każdego z arduino wgrałem poniższe przykładowe programy, które zamieszczam poniżej. Niestety transmisja danych w tym kierunku nie zadziałała - nano wysyłało dane, natomiast uno nie chciało ich odbierać. W drugą stronę było już lepiej, uno zadziałało i zaczęło przesyłać dane do nano, które je odbierało. Dla sprawdzenia czy dany moduł działa dobrze podłączyłem go do oryginału Arduino UNO i wtedy komunikacja w obu kierunkach działała bez zarzutu. Teraz rodzi się takie pytanie czy jest jakieś rozwiązanie aby komunikacja nano z klonem uno działała poprawnie w obu kierunkach? Czy po prostu będe musiał zakupić nowy egzemplarz? Albo w kodzie trzeba coś zmienić? Odbieranie danych: #include <SPI.h> #include "RF24.h" RF24 myRadio (7, 8); struct package { int id=0; float temperature = 0.0; char text[100] ="empty"; }; byte addresses[][6] = {"0"}; typedef struct package Package; Package data; void setup() { Serial.begin(9600); delay(1000); myRadio.begin(); myRadio.setChannel(115); myRadio.setPALevel(RF24_PA_MAX); myRadio.setDataRate( RF24_250KBPS ) ; myRadio.openReadingPipe(1, addresses[0]); myRadio.startListening(); delay(1000); } void loop() { if ( myRadio.available()) { while (myRadio.available()) { myRadio.read( &data, sizeof(data) ); } Serial.print("\nPackage:"); Serial.print(data.id); Serial.print("\n"); Serial.println(data.temperature); Serial.println(data.text); } } Wysyłanie: #include <SPI.h> #include "RF24.h" RF24 myRadio (7, 8); byte addresses[][6] = {"0"}; struct package { int id=1; float temperature = 18.3; char text[100] = "Text to be transmitted"; }; typedef struct package Package; Package data; void setup() { Serial.begin(9600); delay(1000); myRadio.begin(); myRadio.setChannel(115); myRadio.setPALevel(RF24_PA_MAX); myRadio.setDataRate( RF24_250KBPS ) ; myRadio.openWritingPipe( addresses[0]); delay(1000); } void loop() { myRadio.write(&data, sizeof(data)); Serial.print("\nPackage:"); Serial.print(data.id); Serial.print("\n"); Serial.println(data.temperature); Serial.println(data.text); data.id = data.id + 1; data.temperature = data.temperature+0.1; delay(1000); }
  9. Ok jeszcze raz wielkie dzięki, program już działa poprawnie bo wcześniej zapomniałem jeszcze ustawić flagę na true przy odczycie temperatury i teraz wszystko jest ok
  10. No niestety ten twój program nie zadziałał, ale mimo to wielkie dzięki. I mam jeszcze 2 pytania: - czy żeby zrobić więcej progów to wystarczy większą tablice zrobić i dorobić pozostałe warunki takie same jak w tym programie? - i jaki obecnie największy wyświetlacz 4x20 można połączyć z arduino (najlepiej OLED), bo szukałem i największe to były chyba z 5,7 cali, a najlepiej jakby był jeszcze większy
  11. Teraz lepiej, bo już da się zmienić progi i nie miga już, tylko że da się zrobić to tylko raz bo potem przycisk ENTEXIT nie reaguje. #include <OneWire.h> #include <DS18B20.h> #include <Wire.h> #include <LiquidCrystal_I2C.h> #define BACKLIGHT_PIN 3 //przyciski #define UP 4 #define DOWN 5 #define ENTER 6 #define ENTEXIT 10 #define LED 8 //Numer pinu do ktorego podlaczasz czujnik #define ONEWIRE_PIN 2 float temperatura = 0; float temp =0; float liczba[2] = {0,0}; //progi temperatur int prog = 0; //wartosc dla danego progu int entexit = 0; bool flaga = true; bool flaga2 = true; //ostatnie klikniecia przyciskow long last_up = 0; long last_down = 0; long last_enter = 0; long last_entexit = 0; long last_check = 0; //adres czujnika byte address[8] = {0x28, 0xFF, 0x9A, 0x26, 0x58, 0x16, 0x4, 0x42}; //Adres wyswietlacza LiquidCrystal_I2C lcd(0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); OneWire onewire(ONEWIRE_PIN); DS18B20 sensors(&onewire); void setup() { // put your setup code here, to run once: Serial.begin(9600); pinMode(ENTER, INPUT_PULLUP); pinMode(UP, INPUT_PULLUP); pinMode(DOWN, INPUT_PULLUP); pinMode(ENTEXIT, INPUT_PULLUP); sensors.begin(); sensors.request(address); lcd.begin(16, 2); lcd.setBacklightPin(BACKLIGHT_PIN, POSITIVE); lcd.setBacklight(HIGH); lcd.setCursor(0, 0); //ustawienie kursora lcd.print("Temp: "); } /*void progi(float temperatura, float liczba[0], float liczba[1]) { if(temperatura > liczba[0] && temperatura < liczba[1]) { digitalWrite(LED, HIGH); delay(200); } else { digitalWrite(LED, LOW); delay(200); } }*/ void loop() { // put your main code here, to run repeatedly: temperatura = sensors.readTemperature(address); sensors.request(address); if((digitalRead(ENTEXIT)==LOW) && (millis() - last_entexit > 200)) { if(entexit==0){entexit=1;} else{entexit = 0;} last_entexit = millis(); } if((millis() - last_check > 3000)){ temperatura = sensors.readTemperature(address); sensors.request(address); last_check = millis(); flaga2 = true; } if(entexit==0 && flaga2 ==true) { lcd.clear(); lcd.setCursor(0,0); lcd.print("Temp: "); lcd.setCursor(6, 0); lcd.print(temperatura); lcd.setCursor(12, 0); lcd.print("*C"); // delay(3000); if(temperatura > liczba[0] && temperatura < liczba[1]) { digitalWrite(LED, HIGH); delay(200); } else { digitalWrite(LED, LOW); delay(200); } flaga2 = false; } if(entexit == 1){ if((digitalRead(ENTER)==LOW) && (millis() - last_enter > 200)) { flaga = true; flaga2 = true; if(prog == 0) { prog = 1; } else { prog = 0; } last_enter = millis(); } if(prog == 1) { if(flaga== true) { lcd.clear(); lcd.setCursor(0,0); lcd.print("MAX"); lcd.setCursor(10, 0); lcd.print(liczba[prog],1); flaga = false; } } if(prog ==0) { if(flaga== true) { lcd.clear(); lcd.setCursor(0,0); lcd.print("MIN"); lcd.setCursor(10, 0); lcd.print(liczba[prog],1); flaga = false; } } /*if(flaga!=false) { lcd.clear(); lcd.setCursor(0,0); lcd.setCursor(10, 0); lcd.print(liczba[prog],1); flaga=false; }*/ if(liczba[prog] < 100.0) { if((digitalRead(UP)==LOW) && (millis() - last_up > 200)) { liczba[prog]+=0.1; last_up = millis(); flaga = true; } } if( 0 <= liczba[prog]) { if((digitalRead(DOWN)==LOW) && (millis() - last_down > 200)) { liczba[prog]-=0.1; last_down = millis(); flaga = true; } } } }
  12. Teraz nie miga, bo się nie da zmienić wogóle progów, raz na początku tylko jak przycisnę przycisk to pojawia się na sekundę, a potem to sie już nic nie da zmienić. #include <OneWire.h> #include <DS18B20.h> #include <Wire.h> #include <LiquidCrystal_I2C.h> #define BACKLIGHT_PIN 3 //przyciski #define UP 4 #define DOWN 5 #define ENTER 6 #define ENTEXIT 10 #define LED 8 //Numer pinu do ktorego podlaczasz czujnik #define ONEWIRE_PIN 2 float temperatura = 0; float temp =0; float liczba[2] = {0,0}; //progi temperatur int prog = 0; //wartosc dla danego progu int entexit = 0; bool flaga = true; bool flaga2 = true; //ostatnie klikniecia przyciskow long last_up = 0; long last_down = 0; long last_enter = 0; long last_entexit = 0; long last_check = 0; //adres czujnika byte address[8] = {0x28, 0xFF, 0x9A, 0x26, 0x58, 0x16, 0x4, 0x42}; //Adres wyswietlacza LiquidCrystal_I2C lcd(0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); OneWire onewire(ONEWIRE_PIN); DS18B20 sensors(&onewire); void setup() { Serial.begin(9600); pinMode(ENTER, INPUT_PULLUP); pinMode(UP, INPUT_PULLUP); pinMode(DOWN, INPUT_PULLUP); pinMode(ENTEXIT, INPUT_PULLUP); sensors.begin(); sensors.request(address); lcd.begin(16, 2); lcd.setBacklightPin(BACKLIGHT_PIN, POSITIVE); lcd.setBacklight(HIGH); lcd.setCursor(0, 0); //ustawienie kursora lcd.print("Temp: "); } /*void progi(float temperatura, float liczba[0], float liczba[1]) { if(temperatura > liczba[0] && temperatura < liczba[1]) { digitalWrite(LED, HIGH); delay(200); } else { digitalWrite(LED, LOW); delay(200); } }*/ void loop() { temperatura = sensors.readTemperature(address); sensors.request(address); if((digitalRead(ENTEXIT)==LOW) && (millis() - last_entexit > 200)) { if(entexit==0){entexit=1;} else{entexit = 0;} last_entexit = millis(); } if((millis() - last_check > 3000)){ temperatura = sensors.readTemperature(address); sensors.request(address); last_check = millis(); flaga2 = true; } if(entexit==0 && flaga2 ==true) { lcd.clear(); lcd.setCursor(0,0); lcd.print("Temp: "); lcd.setCursor(6, 0); lcd.print(temperatura); lcd.setCursor(12, 0); lcd.print("*C"); // delay(3000); if(temperatura > liczba[0] && temperatura < liczba[1]) { digitalWrite(LED, HIGH); delay(200); } else { digitalWrite(LED, LOW); delay(200); } flaga2 = false; } if(entexit == 1){ if((digitalRead(ENTER)==LOW) && (millis() - last_enter > 200)) { if(prog == 0) { prog = 1; } else { prog = 0; } last_enter = millis(); } if(prog == 1) { if(flaga== true) { lcd.clear(); lcd.setCursor(0,0); lcd.print("MAX"); lcd.setCursor(10, 0); lcd.print(liczba[prog],1); flaga = false; } } if(prog ==0) { if(flaga== true) { lcd.clear(); lcd.setCursor(0,0); lcd.print("MIN"); lcd.setCursor(10, 0); lcd.print(liczba[prog],1); flaga = false; } } /*if(flaga!=false) { lcd.clear(); lcd.setCursor(0,0); lcd.setCursor(10, 0); lcd.print(liczba[prog],1); flaga=false; }*/ if(liczba[prog] < 100.0) { if((digitalRead(UP)==LOW) && (millis() - last_up > 200)) { liczba[prog]+=0.1; last_up = millis(); flaga = true; } } if( 0 <= liczba[prog]) { if((digitalRead(DOWN)==LOW) && (millis() - last_down > 200)) { liczba[prog]-=0.1; last_down = millis(); flaga = true; } } } }
  13. W którym miejscu to mam zmienić, bo przez wyświetlanie, rozumiem to if(prog == 1) { if(flaga== true) { lcd.clear(); lcd.setCursor(0,0); lcd.print("MAX"); lcd.setCursor(10, 0); lcd.print(liczba[prog],1); flaga = false; } } if(prog ==0) { if(flaga== true) { lcd.clear(); lcd.setCursor(0,0); lcd.print("MIN"); lcd.setCursor(10, 0); lcd.print(liczba[prog],1); flaga = false; } }
  14. No dobra tak zrobiłem, tylko co teraz z tym migającymi progami i wartościami na progach #include <OneWire.h> #include <DS18B20.h> #include <Wire.h> #include <LiquidCrystal_I2C.h> #define BACKLIGHT_PIN 3 //przyciski #define UP 4 #define DOWN 5 #define ENTER 6 #define ENTEXIT 10 #define LED 8 //Numer pinu do ktorego podlaczasz czujnik #define ONEWIRE_PIN 2 float temperatura = 0; float temp =0; float liczba[2] = {0,0}; //progi temperatur int prog = 0; //wartosc dla danego progu int entexit = 0; bool flaga = true; bool flaga2 = true; //ostatnie klikniecia przyciskow long last_up = 0; long last_down = 0; long last_enter = 0; long last_entexit = 0; long last_check = 0; //adres czujnika byte address[8] = {0x28, 0xFF, 0x9A, 0x26, 0x58, 0x16, 0x4, 0x42}; //Adres wyswietlacza LiquidCrystal_I2C lcd(0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); OneWire onewire(ONEWIRE_PIN); DS18B20 sensors(&onewire); void setup() { // put your setup code here, to run once: Serial.begin(9600); pinMode(ENTER, INPUT_PULLUP); pinMode(UP, INPUT_PULLUP); pinMode(DOWN, INPUT_PULLUP); pinMode(ENTEXIT, INPUT_PULLUP); sensors.begin(); sensors.request(address); lcd.begin(16, 2); lcd.setBacklightPin(BACKLIGHT_PIN, POSITIVE); lcd.setBacklight(HIGH); lcd.setCursor(0, 0); //ustawienie kursora lcd.print("Temp: "); } /*void progi(float temperatura, float liczba[0], float liczba[1]) { if(temperatura > liczba[0] && temperatura < liczba[1]) { digitalWrite(LED, HIGH); delay(200); } else { digitalWrite(LED, LOW); delay(200); } }*/ void loop() { // put your main code here, to run repeatedly: temperatura = sensors.readTemperature(address); sensors.request(address); if((digitalRead(ENTEXIT)==LOW) && (millis() - last_entexit > 200)) { if(entexit==0){entexit=1;} else{entexit = 0;} last_entexit = millis(); } if((millis() - last_check > 3000)){ temperatura = sensors.readTemperature(address); sensors.request(address); last_check = millis(); flaga2 = true; } if(entexit==0 && flaga2 ==true){ lcd.clear(); lcd.setCursor(0,0); lcd.print("Temp: "); lcd.setCursor(6, 0); lcd.print(temperatura); lcd.setCursor(12, 0); lcd.print("*C"); // delay(3000); if(temperatura > liczba[0] && temperatura < liczba[1]) { digitalWrite(LED, HIGH); delay(200); } else { digitalWrite(LED, LOW); delay(200); } flaga2 = false; } if(entexit == 1){ if((digitalRead(ENTER)==LOW) && (millis() - last_enter > 200)) { if(prog == 0) { prog = 1; } else { prog = 0; } last_enter = millis(); } if(prog == 1){ lcd.clear(); lcd.setCursor(0,0); lcd.print("MAX"); lcd.setCursor(10, 0); lcd.print(liczba[prog],1); } if(prog ==0){ lcd.clear(); lcd.setCursor(0,0); lcd.print("MIN"); lcd.setCursor(10, 0); lcd.print(liczba[prog],1); } if(flaga!=false){ lcd.clear(); lcd.setCursor(0,0); lcd.setCursor(10, 0); lcd.print(liczba[prog],1); flaga=false; } if(liczba[prog] < 100.0){ if((digitalRead(UP)==LOW) && (millis() - last_up > 200)) { liczba[prog]+=0.1; last_up = millis(); flaga = true;} } if( 0 <= liczba[prog]){ if((digitalRead(DOWN)==LOW) && (millis() - last_down > 200)) { liczba[prog]-=0.1; last_down = millis(); flaga = true;} } } }
×
×
  • Utwórz nowe...