Programmazione ARDUINO per acquario
Buongiorno mi servirebbe una mano per programmare il mio arduino 2560 per creare un menu che mi faccia fare il cambio acqua, e la sospensione per 10 minuti della pompa come posso fare? per ora ho questo:
[CODE] #include #include #include #include #include #include #include #include #include #include int rele5 = 43; // pin a cui è connesso il LED boolean acceso = false; byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; IPAddress ip( 192, 168, 1, 6 ); EthernetServer server(80); PCF8574_HD44780_I2C lcd(0x3F, 20, 4); long Pompa_Accesa_in_data=0; const unsigned long quanto_tempo_deve_restare_accesa_la_pompa = 300000; long inizio_accensione_arduino= 0; unsigned long quanto_tempo_deve_restare_spento_skim_avvio_arduin o = 300000; int pompa_spenta =0; int oraAlba = 9; int minAlba = 10; long albas; int durataAlbas = 720; int oraTramonto = 17; int minTramonto = 10; long tramontos; int durataTramontos = 720; long nows; int delayR = 0; int delayG = 120; int delayB = 240; int delayUV = 360; int delayW = 360; //LED int pinR = 2; int pinG = 3; int pinB = 4; int pinW = 5; int pinUV = 6; //RELE float rele1 = 35; float rele2 = 37; int rele3 = 39; int rele4 = 41; int rele6 = 45; int rele7 = 47; //menu int Menu=0; // VARIABILE CHE IDENTIFICA IL MENU' IN USO const int buttonPingiu = 22; // pin Giu const int buttonPinsu= 24; // pin Su const int buttonPinok = 26; // pin OK const int buttonPinPiu = 30; // pin modifica più const int buttonPinMeno = 32; // pin modifica meno int lastButtonokState = LOW; // the previous reading from the Enter input pin int lastButtongiuState = LOW; // the previous reading from the Esc input pin int lastButtonsuState = LOW; // the previous reading from the Left input pin int lastButtonPiuState = LOW; // int lastButtonMenoState = LOW; // long lastEnterDebounceTime = 0; // the last time the output pin was toggled long lastEscDebounceTime = 0; // the last time the output pin was toggled long lastLeftDebounceTime = 0; // the last time the output pin was toggled long lastRightDebounceTime = 0; // the last time the output pin was toggled long debounceDelay = 500; // the debounce time //Variabili del menu MenuBackend menu = MenuBackend(menuUseEvent,menuChangeEvent); void menuUseEvent(MenuUseEvent used) { Serial.println("menuUseEvent found Dealy (D)"); } void menuChangeEvent(MenuChangeEvent changed) { Serial.print("Menu change "); Serial.print(changed.from.getName()); Serial.print(" "); Serial.println(changed.to.getName()); } // MENU' IMPOSTAZIONI MenuItem menu1Item3 = MenuItem("Item3"); MenuItem menuData=MenuItem("Data/Ora"); MenuItem menuOra=MenuItem("Ora"); char buffer1[20]; char buffer2[20]; //ALLARMI float riscaldatore = 22.0; // allerta temperatura acqua bassa float alertacqua = 27.0; // ventola tangenziale float alertplafo = 44.0; // alerta plafoniera temperatura troppo alta float tempSoglia = 38.0; //temperatura ventole plafo #define ONE_WIRE_BUS 7 OneWire oneWire(ONE_WIRE_BUS); DallasTemperature sensors(&oneWire); DeviceAddress tmp_address; float temp0=0; float temp1=0; int numberOfDevices; void setup() { pinMode(rele1,OUTPUT); pinMode(rele2, OUTPUT); pinMode(rele3, OUTPUT); pinMode(rele4,OUTPUT); pinMode(rele5,OUTPUT); pinMode(rele6,OUTPUT); pinMode(rele7,OUTPUT); digitalWrite(rele1,LOW); digitalWrite( rele2, LOW); digitalWrite( rele3, HIGH ); digitalWrite(rele4, LOW); digitalWrite(rele5,0); digitalWrite(rele6, LOW); digitalWrite(rele7, LOW); //BUTTON pinMode(buttonPinMeno, INPUT); pinMode(buttonPinPiu, INPUT); pinMode(buttonPinok, INPUT); pinMode(buttonPinsu, INPUT); Serial.begin(9600); Wire.begin(); sensors.begin(); Ethernet.begin(mac, ip); server.begin(); Serial.print("server is at "); Serial.println(Ethernet.localIP()); setSyncProvider(RTC.get); // the function to get the time from the RTC if(timeStatus() != timeSet) Serial.println("Unable to sync with the RTC"); else Serial.println("RTC has set the system time"); lcd.init(); // LCD Initialization lcd.backlight( ); // Backlight ON lcd.clear(); // Clear the display numberOfDevices = 1; pinMode(pinR, OUTPUT); pinMode(pinG, OUTPUT); pinMode(pinB, OUTPUT); pinMode(pinW, OUTPUT); pinMode(pinUV, OUTPUT); inizio_accensione_arduino= millis(); } void loop() { if (millis() >= (quanto_tempo_deve_restare_spento_skim_avvio_ardui no + inizio_accensione_arduino)) { digitalWrite(rele3, LOW); } case 0: if ( digitalRead( buttonMeno ) == HIGH || ( digitalRead( buttonPiu )) == HIGH) { time = millis(); } // prendo ora attuale DateTime now = RTC.get(); sprintf(buffer1, "%02d:%02d:%02d", now.hour(), now.minute(), now.second()); lcd.setCursor(0,0); lcd.print( buffer1 ); sprintf(buffer2, "%02d/%02d/%d", now.day(), now.month(), now.year()); lcd.setCursor(0,1); lcd.print( buffer2 ); Serial.println(buffer1); Serial.println(buffer2); // Richiesta temperatura sensors.requestTemperatures(); // Comando per misurare la temp. temp0 = sensors.getTempCByIndex(0); lcd.setCursor(0,2); // Colonna 0, Riga 2 lcd.print("acqua:"); lcd.setCursor (6, 2); lcd.print(temp0); temp1 = sensors.getTempCByIndex(1); lcd.setCursor (0,3); //Colonna 0, Riga 3 lcd.print("plafo:"); lcd.setCursor (6,3); lcd.print(temp1); lcd.setCursor(12,1); // Colonna 0, Riga 0 lcd.print("feed:"); lcd.setCursor(12,2); // Colonna 0, Riga 0 lcd.print("cambio:"); /* if (millis()>=(Pompa_Accesa_in_data + quanto_tempo_deve_restare_accesa_la_pompa)) { digitalWrite(rele5,0); Pompa_Accesa_in_data = millis(); { */ //pompa_Spenta ==digitalRead (rele5); // Vengono ascoltati nuovi client EthernetClient client = server.available(); if (client) { Serial.println("new client"); // Finisce una richiesta HTTP boolean currentLineIsBlank = true; String postText =""; while (client.connected()) { if (client.available()) { char c = client.read(); if(postText.length() |
E' una domanda un po' difficilotta per un forum di acquari.
Magari prova a scrivere il titolo un po' meglio, specificando a che linguaggio/controller ti riferisci. Qualcuno che sa fare sta roba, qua, c'è stato di sicuro. Tutto sta a vedere se legge la tua discussione ;-) |
|
Ci sono tante cose che non capisco in questo listato ma preferisco non chiedere...
Qua ci sono più errori (mancano tutte le parentesi graffe) e non viene impostato il systemtime sull'RTC Quote:
Per quel che riguarda il sistema per tener spenta la pompa per 10 minuti è semplice: - converti i minuti di spegnimento in millis() - salvi questo valore in una variabile long - e lo paragoni ai millis() correnti codice:
void setup(){ Alla relativa voce del menù inserisci codice:
inizio_sospensione = millis(); codice:
if((inizio_sospensione + quanto_tempo_deve_restare_spenta_la_pompa) >= millis()){ @Mod: per favore potreste inserire quel listato tra i TAG CODE (altrimenti è illeggibile la pagina) Ciao |
Grazie SirNino ora provo quella libreria e vediamo cosa combino
Inviato dal mio LG-D855 utilizzando Tapatalk |
Buona sera a tutti ho provato a caricare quella libreria ma non va perche ha bisogno della libreria liquidcrytal e io invece ho la : #include <PCF8574_HD44780_I2C.h> quindi mi da erori su errori, ho provato a caricarla cosi:
codice:
//The full code is in library example file Quick_tour.ino Arduino:1.6.5 (Windows 7), Scheda:"Arduino/Genuino Mega or Mega 2560, ATmega2560 (Mega 2560)" quick_tour.ino: In function 'void setup()': quick_tour:30: error: expected primary-expression before 'lcd' quick_tour:30: error: expected primary-expression before ')' token quick_tour:30: error: expected ';' before ')' token expected primary-expression before 'lcd' |
Questo non è un listato funzionante ma un esempio, un estratto.
Mancano delle parentesi, manca il setup(). Prova ad aprire qualche esempio incluso nella libreria e modificarlo per capire come funziona. Inviato dal mio H60-L04 utilizzando Tapatalk |
ciao Nino l'ho modifica l'originale è questo:
codice:
/The full code is in library example file Quick_tour.ino |
Ciao SirNino non è che potresti spiegarmi come sistemare sketch e aggiungere il menu?
Inviato dal mio LG-D855 utilizzando Tapatalk |
Nessuno mi spiega :(
Inviato dal mio LG-D855 utilizzando Tapatalk |
Tutti gli orari sono GMT +2. Attualmente sono le 23:12. |
Powered by vBulletin versione 3.8.9
Copyright ©: 2000 - 2024, Jelsoft Enterprises Ltd.
Traduzione italiana Team: AcquaPortal
User Alert System provided by
Advanced User Tagging v3.2.5 Patch Level 2 (Lite) -
vBulletin Mods & Addons Copyright © 2024 DragonByte Technologies Ltd.
Copyright Zero Pixel Srl