Cerca nel forum:
Acquaportal - Forum e Community

  





Benvenuti sul Forum di AcquaPortal, la più grande community italiana di acquariofilia!
Sul Forum di AcquaPortal puoi discutere con altri appassionati di acquariofilia, tenere un tuo Blog personale, inserire foto e video, chattare, ed aiutarci a creare un grande database con schede di pesci, invertebrati e prodotti di acquariofilia.


Per entrar a far parte della comunità occorre registrarsi.
Per farlo premi su

Registrazione


Al momento della registrazione ti verrà richiesto di accettare il Regolamento che ti consigliamo di leggere attentamente.
Ti consigliamo inoltre di leggere le FAQ per apprendere le funzionalità principali del forum.
Se invece sei un utente registrato e hai dimenticato i tuoi dati di accesso devi effettuare il Recupero dati.




Tecnica marino Per parlare della vasca, del mobile, della sump, dell'impianto idraulico, delle attrezzature e degli accessori (pompe, filtri, schiumatoi, reattori, ecc).

Rispondi
Vecchio 15-11-2015, 14:55   #1
marco3020
Ciclide
 
L'avatar di marco3020
 
Registrato: Feb 2011
Città: milano
Azienda: no
Acquariofilo: Marino
N° Acquari: 1
Età : 39
Messaggi: 1.897
Foto: 0 Albums: 0
Post "Grazie" / "Mi Piace"
Grazie (Dati): 1
Grazie (Ricev.): 0
Mi piace (Dati): 1
Mi piace (Ricev.): 0
Mentioned: 7 Post(s)
Feedback 7/100%
Invia un messaggio tramite Skype a marco3020

Annunci Mercatino: 0
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()
__________________

Ultima modifica di marco3020; 17-11-2015 alle ore 18:13. Motivo: Aiuto a creare menu con arduino
marco3020 non è in linea   Rispondi quotando


Vecchio 17-11-2015, 18:01   #2
SJoplin
Pesce pagliaccio
 
L'avatar di SJoplin
 
Registrato: Dec 2006
Città: Bologna
Acquariofilo: Marino
N° Acquari: 1
Età : 58
Messaggi: 38.772
Foto: 0 Albums: 1
Post "Grazie" / "Mi Piace"
Grazie (Dati): 19
Grazie (Ricev.): 61
Mi piace (Dati): 53
Mi piace (Ricev.): 209
Mentioned: 237 Post(s)
Feedback 0/0%

Annunci Mercatino: 0
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
SJoplin non è in linea   Rispondi quotando
Vecchio 17-11-2015, 18:57   #3
alegiu
Moderatore
 
L'avatar di alegiu
 
Registrato: Jan 2011
Città: Bologna
Acquariofilo: Dolce/Marino
N° Acquari: 1
Età : 43
Messaggi: 12.133
Foto: 0 Albums: 2
Post "Grazie" / "Mi Piace"
Grazie (Dati): 58
Grazie (Ricev.): 74
Mi piace (Dati): 128
Mi piace (Ricev.): 368
Mentioned: 323 Post(s)
Feedback 11/100%
Invia un messaggio tramite Yahoo a alegiu Invia un messaggio tramite Skype a alegiu
Acquariofilo Nano dell'anno 2013

Annunci Mercatino: 0
arduino giusto?

Potrebbe esserti di aiuto @SirNino
alegiu non è in linea   Rispondi quotando
Vecchio 18-11-2015, 00:56   #4
SirNino
Ciclide
 
L'avatar di SirNino
 
Registrato: Oct 2010
Città: Carpi (MO)
Acquariofilo: Dolce
N° Acquari: 1
Età : 47
Messaggi: 1.239
Foto: 0 Albums: 1
Post "Grazie" / "Mi Piace"
Grazie (Dati): 15
Grazie (Ricev.): 9
Mi piace (Dati): 6
Mi piace (Ricev.): 23
Mentioned: 45 Post(s)
Feedback 7/100%
Invia un messaggio tramite MSN a SirNino Invia un messaggio tramite Skype a SirNino

Annunci Mercatino: 0
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

Originariamente inviata da marco3020 Visualizza il messaggio
...
if(timeStatus() != timeSet)
Serial.println("Unable to sync with the RTC");
else
Serial.println("RTC has set the system time");
Sul metodo di costruzione del menù credo che qua ti stiano già provando ad aiutare (segui il link che ti hanno dato, prova e studia gli esempi) quindi, visto che non conosco questa libreria preferirei non aggiungere altro.

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(){
...

unsigned long inizio_sospensione;
unsigned long quanto_tempo_deve_restare_spenta_la_pompa = 600000;
}

Alla relativa voce del menù inserisci

codice:
inizio_sospensione = millis();
nel loop inserisci

codice:
if((inizio_sospensione + quanto_tempo_deve_restare_spenta_la_pompa) >= millis()){
digitalWrite(n°uscita, HIGH);
}else{
digitalWrite(n°uscita, LOW);
Ovviamente sostituisci n°uscita con il relativo numero di uscita utilizzato.



@Mod: per favore potreste inserire quel listato tra i TAG CODE (altrimenti è illeggibile la pagina)



Ciao
__________________
Chi non ride mai non è una persona seria - (Chopin)
...La sobrietà và presa con moderazione... - (Jax - Brillo ma da lucido)

La mia vasca - RITORNO AL DOLCE
SirNino non è in linea   Rispondi quotando
Vecchio 18-11-2015, 08:52   #5
marco3020
Ciclide
 
L'avatar di marco3020
 
Registrato: Feb 2011
Città: milano
Azienda: no
Acquariofilo: Marino
N° Acquari: 1
Età : 39
Messaggi: 1.897
Foto: 0 Albums: 0
Post "Grazie" / "Mi Piace"
Grazie (Dati): 1
Grazie (Ricev.): 0
Mi piace (Dati): 1
Mi piace (Ricev.): 0
Mentioned: 7 Post(s)
Feedback 7/100%
Invia un messaggio tramite Skype a marco3020

Annunci Mercatino: 0
Grazie SirNino ora provo quella libreria e vediamo cosa combino

Posted With Tapatalk
__________________
marco3020 non è in linea   Rispondi quotando
Vecchio 18-11-2015, 22:16   #6
marco3020
Ciclide
 
L'avatar di marco3020
 
Registrato: Feb 2011
Città: milano
Azienda: no
Acquariofilo: Marino
N° Acquari: 1
Età : 39
Messaggi: 1.897
Foto: 0 Albums: 0
Post "Grazie" / "Mi Piace"
Grazie (Dati): 1
Grazie (Ricev.): 0
Mi piace (Dati): 1
Mi piace (Ricev.): 0
Mentioned: 7 Post(s)
Feedback 7/100%
Invia un messaggio tramite Skype a marco3020

Annunci Mercatino: 0
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
#include <Wire.h>
#include <LCD.h>
#include <LiquidCrystal_I2C.h>
#include <PCF8574_HD44780_I2C.h>
#include <buttons.h>
#include <MENWIZ.h>
#include <EEPROM.h>

PCF8574_HD44780_I2C lcd(0x3F, 20, 4);

// DEFINE ARDUINO PINS FOR THE NAVIGATION BUTTONS
#define UP_BOTTON_PIN       9
#define DOWN_BOTTON_PIN     10
#define LEFT_BOTTON_PIN     7 
#define RIGHT_BOTTON_PIN    8
#define CONFIRM_BOTTON_PIN  12
#define ESCAPE_BOTTON_PIN   11

menwiz tree;
// create lcd obj using LiquidCrystal lib


int  list,sp=110;

void setup(){
  _menu *r,*s1,*s2;

  Serial.begin(9600);    
  tree.begin(PCF8574_HD44780_I2C lcd(0x3F, 20, 4);); //declare lcd object and screen size to menwiz lib

 lcd.init();           // LCD Initialization
  lcd.backlight( );      // Backlight ON
  lcd.clear();          // Clear the display
  
  r=tree.addMenu(MW_ROOT,NULL,F("Root"));
    s1=tree.addMenu(MW_SUBMENU,r, F("Node1"));
      s2=tree.addMenu(MW_VAR,s1, F("Node3"));
        s2->addVar(MW_LIST,&list);
        s2->addItem(MW_LIST, F("Option1"));
        s2->addItem(MW_LIST, F("Option2"));
        s2->addItem(MW_LIST, F("Option3"));
      s2=tree.addMenu(MW_VAR,s1, F("Node4"));
        s2->addVar(MW_AUTO_INT,&sp,0,120,10);  
    s1=tree.addMenu(MW_VAR,r, F("Node2"));
      s1->addVar(MW_ACTION,myfunc);
       tree.navButtons(UP_BOTTON_PIN,DOWN_BOTTON_PIN,LEFT_BOTTON_PIN,RIGHT_BOTTON_PIN,ESCAPE_BOTTON_PIN,CONFIRM_BOTTON_PIN);
  }

void loop(){
  tree.draw(); 
  }

void myfunc(){
  Serial.println("ACTION FIRED");
  }
e questo è lo'erroere

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 error: expected primary-expression before 'lcd'
quick_tour error: expected primary-expression before ')' token
quick_tour error: expected ';' before ')' token
expected primary-expression before 'lcd'
__________________
marco3020 non è in linea   Rispondi quotando
Vecchio 18-11-2015, 23:05   #7
SirNino
Ciclide
 
L'avatar di SirNino
 
Registrato: Oct 2010
Città: Carpi (MO)
Acquariofilo: Dolce
N° Acquari: 1
Età : 47
Messaggi: 1.239
Foto: 0 Albums: 1
Post "Grazie" / "Mi Piace"
Grazie (Dati): 15
Grazie (Ricev.): 9
Mi piace (Dati): 6
Mi piace (Ricev.): 23
Mentioned: 45 Post(s)
Feedback 7/100%
Invia un messaggio tramite MSN a SirNino Invia un messaggio tramite Skype a SirNino

Annunci Mercatino: 0
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.

Posted With Tapatalk
__________________
Chi non ride mai non è una persona seria - (Chopin)
...La sobrietà và presa con moderazione... - (Jax - Brillo ma da lucido)

La mia vasca - RITORNO AL DOLCE
SirNino non è in linea   Rispondi quotando
Vecchio 18-11-2015, 23:08   #8
marco3020
Ciclide
 
L'avatar di marco3020
 
Registrato: Feb 2011
Città: milano
Azienda: no
Acquariofilo: Marino
N° Acquari: 1
Età : 39
Messaggi: 1.897
Foto: 0 Albums: 0
Post "Grazie" / "Mi Piace"
Grazie (Dati): 1
Grazie (Ricev.): 0
Mi piace (Dati): 1
Mi piace (Ricev.): 0
Mentioned: 7 Post(s)
Feedback 7/100%
Invia un messaggio tramite Skype a marco3020

Annunci Mercatino: 0
ciao Nino l'ho modifica l'originale è questo:

codice:
/The full code is in library example file Quick_tour.ino
#include <Wire.h>
#include <LCD.h>
#include <LiquidCrystal_I2C.h>
#include <buttons.h>
#include <MENWIZ.h>
#include <EEPROM.h>

// DEFINE ARDUINO PINS FOR THE NAVIGATION BUTTONS
#define UP_BOTTON_PIN       9
#define DOWN_BOTTON_PIN     10
#define LEFT_BOTTON_PIN     7 
#define RIGHT_BOTTON_PIN    8
#define CONFIRM_BOTTON_PIN  12
#define ESCAPE_BOTTON_PIN   11

menwiz tree;
// create lcd obj using LiquidCrystal lib
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);

int  list,sp=110;

void setup(){
  _menu *r,*s1,*s2;

  Serial.begin(19200);    
  tree.begin(&lcd,20,4); //declare lcd object and screen size to menwiz lib

  r=tree.addMenu(MW_ROOT,NULL,F("Root"));
    s1=tree.addMenu(MW_SUBMENU,r, F("Node1"));
      s2=tree.addMenu(MW_VAR,s1, F("Node3"));
        s2->addVar(MW_LIST,&list);
        s2->addItem(MW_LIST, F("Option1"));
        s2->addItem(MW_LIST, F("Option2"));
        s2->addItem(MW_LIST, F("Option3"));
      s2=tree.addMenu(MW_VAR,s1, F("Node4"));
        s2->addVar(MW_AUTO_INT,&sp,0,120,10);  
    s1=tree.addMenu(MW_VAR,r, F("Node2"));
      s1->addVar(MW_ACTION,myfunc);
       tree.navButtons(UP_BOTTON_PIN,DOWN_BOTTON_PIN,LEFT_BOTTON_PIN,RIGHT_BOTTON_PIN,ESCAPE_BOTTON_PIN,CONFIRM_BOTTON_PIN);
  }

void loop(){
  tree.draw(); 
  }

void myfunc(){
  Serial.println("ACTION FIRED");
  }
__________________
marco3020 non è in linea   Rispondi quotando
Vecchio 27-11-2015, 18:38   #9
marco3020
Ciclide
 
L'avatar di marco3020
 
Registrato: Feb 2011
Città: milano
Azienda: no
Acquariofilo: Marino
N° Acquari: 1
Età : 39
Messaggi: 1.897
Foto: 0 Albums: 0
Post "Grazie" / "Mi Piace"
Grazie (Dati): 1
Grazie (Ricev.): 0
Mi piace (Dati): 1
Mi piace (Ricev.): 0
Mentioned: 7 Post(s)
Feedback 7/100%
Invia un messaggio tramite Skype a marco3020

Annunci Mercatino: 0
Ciao SirNino non è che potresti spiegarmi come sistemare sketch e aggiungere il menu?

Posted With Tapatalk
__________________
marco3020 non è in linea   Rispondi quotando
Vecchio 29-11-2015, 13:46   #10
marco3020
Ciclide
 
L'avatar di marco3020
 
Registrato: Feb 2011
Città: milano
Azienda: no
Acquariofilo: Marino
N° Acquari: 1
Età : 39
Messaggi: 1.897
Foto: 0 Albums: 0
Post "Grazie" / "Mi Piace"
Grazie (Dati): 1
Grazie (Ricev.): 0
Mi piace (Dati): 1
Mi piace (Ricev.): 0
Mentioned: 7 Post(s)
Feedback 7/100%
Invia un messaggio tramite Skype a marco3020

Annunci Mercatino: 0
Nessuno mi spiega :(

Posted With Tapatalk
__________________
marco3020 non è in linea   Rispondi quotando
Rispondi

Tag
acquario , aiuto , arduino , creare , menù , programmazione
Opzioni
Visualizzazione

Regole d'invio
Non puoi inserire discussioni
Non puoi inserire repliche
Non puoi inserire allegati
Non puoi modificare i tuoi messaggi

BB code è attivo
Le smile sono attive
Il codice IMG è attivo
il codice HTML è disattivato

Vai a



















Tutti gli orari sono GMT +2. Attualmente sono le 15:32. Powered by vBulletin versione 3.8.9
Copyright ©: 2000 - 2024, Jelsoft Enterprises Ltd.
Traduzione italiana Team: AcquaPortal Feedback Buttons provided by Advanced Post Thanks / Like v3.5.0 (Lite) - vBulletin Mods & Addons Copyright © 2024 DragonByte Technologies Ltd.
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
Page generated in 0,25974 seconds with 15 queries