Show Posts
Pages: 1 ... 13 14 [15] 16 17
211  International / Generale / Re: non riesco a capire il problema on: March 11, 2011, 08:31:13 am
P.S. non funziona.... ecco forse perchè non avevo seguito questa strada



home_FINE_v3_sp.cpp: In function 'void loop()':
home_FINE_v3_sp:63: error: invalid conversion from 'char' to 'const char*'
home_FINE_v3_sp:63: error: initializing argument 1 of 'uint16_t UdpClass::sendPacket(const char*, uint8_t*, uint16_t)'
212  International / Generale / Re: non riesco a capire il problema on: March 11, 2011, 08:23:03 am
giusto! le cose + semplici sono anche le più efficaci...... come tutta questa storia dello switch...se mi facevo un bel vettore con 1 e 0 e poi lo scorrevo in 2 istruzioni avevo finito smiley

per il watchdog hai idee ? (ormai ti rompo le scatole per bene!)
213  International / Generale / Re: Reset arduino on: March 11, 2011, 08:20:36 am
mettere un pin digitale uscita bassa è come metterlo a massa
... per il watch dog avete idee?
214  International / Generale / Reset arduino on: March 11, 2011, 07:09:44 am
Dopo aver corretto alcuni bug del mio programma mi serve un sistema che mi resetti l'arduino in casi critici!
ho provato ad inserire il watchdog ma devo aver sbagliato qualcosa e l'arduino mi si resettava di continuo, e non c'era versi di ricaricare il programma, ho dovuto usare un altro arduino come programmatore e ricaricarci il boot loder...

l'altra soluzione che ho provato e collegare il PIN reset con un pin digitale e in caso di necessita mandare l'uscita bassa!
non funziona...mando l'uscita bassa, si resetta ma non parte finchè non stacco materialmente il cavetto tra pinreset e pin9 (si resetta di continuo..)
ho anche provato a dare 2 istruzioni di seguito prima low e poi high per cercare di fare un impulso senza che la porta mi rimanga bassa e lo faccia resettare di continuo...ma non funziona..
eppure setto l'uscita alta nella fase di setup e la reimposto alta come prima istruzione del loop...

come posso fare per resettare questo maledetto via soft? sarebbe ottimo usare il watchdog ma ora ho paura a reinserirlo nuovamente, visto che causa tempi stretti ho montato glia rduini e smotarli non sarebbe facile
215  International / Generale / Re: non riesco a capire il problema on: March 11, 2011, 06:52:57 am
mmmmm ero convinto che atoi mi facesse un cast !
quindi come posso cambiare il mio codice? a me basta trasformar un int in char e viceversa
216  International / Generale / Re: non riesco a capire il problema on: March 11, 2011, 05:41:43 am
si appunto! ne uso sempre 2! se io ci scrivessi "00" a questo punto ne userei 3, ti torna?
la conversione itoa mi restituisce un carattere, seguito da /n
quando converto 40, mi viene il 40 in ascii che è un carattaere, supponiamo la "a" e poi /n
itoa di 40 viene a/n
 infatti provando con "00" fa casino ed uno "0" se lo tira sempre dietro!

mi seriverebbe una guida per inserire correttamente il watchdog...perhcè l'ultima volta ho fatto casino e mi si resettava di continuo
217  International / Generale / Re: non riesco a capire il problema on: March 11, 2011, 04:25:11 am
Allora...
quella funzione ket è parte del codice che il copia incolla non ha copiato...sarebbe
 
Code:
Udp.sendPacket( invio, remoteIp, remotePort);
  smiley-wink

la striga che ho tolto scriveva nel packetbuffer ad ogni loop 0
cioè

Code:
char  packetBuffer[] = "0";


ma il bello è che normalmente funziona! va tutto...tranquillissimo (anche perchè quando faccio itoa da numero a lettera mi viene sempre una lettera sola, no? anche se il numero è 40! perchè sono ascii, giusto??)... tutto funziona bene, tutte le combinazioni...a casa, sul tavolino tutte le combinazioni e tutti i casi anche improbabili funzionavano...funziona tutto per qualche giorno...poi senza motivo si pianta l'arduino


penso che l'unica soluzione sia il watchdog....ma avrei bisogno di un aiuto per sapere come e dove metterlo!
218  International / Generale / Re: Hard disk selector on: March 09, 2011, 12:12:28 pm
Per la testina puoi stare tranquillo, gli hd di ora hanno un microcontrollore che calcola la variazione di tensione in ingresso, se questo si accorge che va giù molto velocemente, parcheggia la testina!
Ma non potresti tenere gli hd sempre accesi e switchare solo la usb ?
219  International / Generale / Re: gestire più strisce led on: March 09, 2011, 12:01:28 pm
Puoi usare un decodificatore e con l'uscita ci piloti un mos che ti accende la striscia
220  International / Generale / Re: non riesco a capire il problema on: March 09, 2011, 11:43:48 am
i rimedi barbari volevo lasciarli come estrema ratio smiley
la cadenza non è precisa (a occhio è capitato 1 volta a settimana) poi quando ho tolto una riga che scriveva 0 nel buffer ad ogni ciclo, si è piantato 2 volte in un giorno! ma non c'è un evento o qualcosa di preciso che lo fa bloccare.... anzi + lavora meno si blocca! (è dovuto al fatto che il contattore della pompa (3kw 380v) quando attacca anche se ha i condensatori fa un extratensione tale che resetta tutto! haah

volevo provare a mettere il watchdog ma l'ultima volta che k'ho fatto con un altro arduino ho sbagliato e mi si resettava di continuo (ho dovuto usare un altro arduino per riprogrammare l'atm smiley )
221  International / Generale / Re: non riesco a capire il problema on: March 09, 2011, 06:26:32 am
Questo è quello che invia il comando di accensione pozzo/acquedotto e tramite led mostra lo stato del remoto!

Code:
//Arduino Casanova aggiornato al 7 Marzo 2011 - Versione senza serial print

#include <SPI.h>       
#include <Ethernet.h>
#include <Udp.h>         

byte mac[] = {  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xEE };
byte ip[] = { 192,168,0,201 }; //Indirizzo IP
unsigned int localPort = 8888;   //Porta


byte remoteIp[] = { 192,168,0,202 };        // Ip arduino Capannacce
unsigned int remotePort = 8888 ; // Porta arduino capannacce

char packetBuffer[UDP_TX_PACKET_MAX_SIZE];
int timer =0;


int stati = 0;
int stato1 = 0;
int stato2 = 0;
int ricevuto = 0;
char invio[] = "0";
//unsigned int sentSize = 0;




void setup() {
 

  Ethernet.begin(mac,ip);
  Udp.begin(localPort);

  Serial.begin(9600);

  pinMode(2,INPUT); //pompa
  pinMode(3,INPUT); //Acquedott

  pinMode(4,OUTPUT);  //pompa
  pinMode(5,OUTPUT); //Acquedotto
  pinMode(6,OUTPUT); //Avaria
  pinMode(7,OUTPUT); //Assenza Energia
  pinMode(8,OUTPUT); //assenza rete access point


}

void loop() {
 
 
 stati = 0;
 
 stato1 = digitalRead(2);
 stato2 = digitalRead(3);
 
   if (stato1 == HIGH) { stati = stati+1;}
   
   if (stato2 == HIGH){  stati =stati+2; }
   
   itoa(stati,invio,10);

ket( invio, remoteIp, remotePort);
   

//char  packetBuffer[] = "0";
 
 

  int packetSize = Udp.available(); // note that this includes the UDP header
  if(packetSize)
  {  digitalWrite(8, LOW);
    timer = 0;
   
   Udp.readPacket(packetBuffer,UDP_TX_PACKET_MAX_SIZE, remoteIp, remotePort);
 
   ricevuto=atoi(packetBuffer);


  switch (ricevuto) {
    case 1:
      digitalWrite(4, HIGH);
      digitalWrite(5, LOW);
      digitalWrite(6, LOW);
      digitalWrite(7, LOW);
      break;
     
    case 2:
      digitalWrite(4, LOW);
      digitalWrite(5, HIGH);
      digitalWrite(6, LOW);
      digitalWrite(7, LOW);     
      break;
     
    case 3:
      digitalWrite(4, HIGH);
      digitalWrite(5, HIGH);
      digitalWrite(6, LOW);
      digitalWrite(7, LOW);

      break;
   
    case 4:
      digitalWrite(4, LOW);
      digitalWrite(5, LOW);             
      digitalWrite(6, HIGH);
      digitalWrite(7, LOW);
      break;
     
    case 5:
      digitalWrite(4, HIGH);
      digitalWrite(5, LOW);
      digitalWrite(6, HIGH);
      digitalWrite(7, LOW);
      break;
   
    case 6:
      digitalWrite(4, LOW);
      digitalWrite(5, HIGH);
      digitalWrite(6, HIGH);     
      digitalWrite(7, LOW);     
      break;
     
    case 7:
      digitalWrite(4, HIGH);
      digitalWrite(5, HIGH);
      digitalWrite(6, HIGH);
      digitalWrite(7, LOW);     
      break;
   
    case 8:
     digitalWrite(4, LOW);
     digitalWrite(5, LOW);
     digitalWrite(6, LOW);
     digitalWrite(7,  HIGH);
     break;
     
    case 9:
      digitalWrite(4, HIGH);
      digitalWrite(5, LOW);
      digitalWrite(6, LOW);     
      digitalWrite(7, HIGH);
      break;
   
    case 10:
      digitalWrite(4, LOW);   
      digitalWrite(5, HIGH);
      digitalWrite(6, LOW);     
      digitalWrite(7, HIGH);
      break;
   
    case 11:
      digitalWrite(4, HIGH);
      digitalWrite(5, HIGH);
      digitalWrite(6, LOW);     
      digitalWrite(7, HIGH);
      break;
   
    case 12:
      digitalWrite(4, LOW);   
      digitalWrite(5, LOW);
      digitalWrite(6, HIGH);
      digitalWrite(7, HIGH);
      break;
   
    case 13:
      digitalWrite(4, HIGH);
      digitalWrite(5, LOW);
      digitalWrite(6, HIGH);
      digitalWrite(7, HIGH);
      break;
     
    case 14:
      digitalWrite(4, LOW);   
      digitalWrite(5, HIGH);
      digitalWrite(6, HIGH);
      digitalWrite(7, HIGH);     
      break;
     
    case 15:
      digitalWrite(4, HIGH);
      digitalWrite(5, HIGH);
      digitalWrite(6, HIGH);
      digitalWrite(7, HIGH);
      break;
   
   
   
    default:
      digitalWrite(4, LOW);
      digitalWrite(5, LOW);
      digitalWrite(6, LOW);
      digitalWrite(7, LOW);
  }
}
else   { timer = timer+1;
if (timer > 20){
  //Serial.println("NESSUNA RISPOSTA");
 digitalWrite(4, LOW);
      digitalWrite(5, LOW);
      digitalWrite(6, LOW);
      digitalWrite(7, LOW);
  digitalWrite(8, HIGH);}
   


}
 
Serial.println(timer);
delay (500);
}


Questo è il remoto: accende pompa o pozzo e manda informazioni sugli stati


Code:
//aggiornato al 7 marzo 2011, versione senza serial print
#include <SPI.h>         
#include <Ethernet.h>
#include <Udp.h>         

byte mac[] = {  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 192,168,0,202 };       //Indirizzo Ip
unsigned int localPort = 8888;      // Porta in ascolto


byte remoteIp[] = { 192,168,0,201 };        //Indirzzo IP Arduino Casanova
unsigned int remotePort = 8888; // Porta Arduino Casanova


char packetBuffer[UDP_TX_PACKET_MAX_SIZE]; //buffer to hold incoming packet,


int arrivo;
char invio[] = "0";

int timer = 0;

int stato4 = 0;
int stato5 = 0;
int stato6 = 0;
int stato7 = 0;
int stati = 0;

void setup() {
 
  pinMode(2, OUTPUT); // Pompa
  pinMode(3, OUTPUT); // Acquedotto
  pinMode(8, OUTPUT); //Assenza Energia Eleettrica
 
  pinMode(4,INPUT); // Pompa
  pinMode(5,INPUT); // Acquedotto
  pinMode(6,INPUT); // Avaria Pompa
  pinMode(7,INPUT); //Energia Elettrica
 
  // start the Ethernet and UDP:
  Ethernet.begin(mac,ip);
  Udp.begin(localPort);

  Serial.begin(9600);
}

void loop() {
 
 
   stati = 0;

  int packetSize = Udp.available();
  if(packetSize) //controlla se c'è un pacchetto UDP
  {     timer =0;

    // read the packet into packetBufffer and get the senders IP addr and port number
    Udp.readPacket(packetBuffer,UDP_TX_PACKET_MAX_SIZE, remoteIp, remotePort);
    arrivo=atoi(packetBuffer);
   


  switch (arrivo) {
    case 1:
      digitalWrite(2, HIGH);
      digitalWrite(3, LOW);
      break;
   
    case 2:
      digitalWrite(2, LOW);
      digitalWrite(3, HIGH);
      break;
     
    case 3:
      digitalWrite(2, HIGH);
      digitalWrite(3, HIGH);
      break;
   
    default:
      digitalWrite(2, LOW);
      digitalWrite(3, LOW);
     
  }}
  else {
    timer= timer+1;
    if (timer >20){
    digitalWrite(2, LOW);
    digitalWrite(3, LOW);
    //Serial.print("Nessun Collegamento");}
 
  }

   stato4 = digitalRead(4);
   stato5 = digitalRead(5);
   stato6 = digitalRead(6);
   stato7 = digitalRead(7);
   
   if (stato4 == HIGH) { (stati=stati+1);  } 
   if (stato5 == HIGH) { (stati=stati+2);  }   
   if (stato6 == HIGH) { (stati=stati+4);  }
   if (stato7 == LOW) { (stati=stati+8);
                        digitalWrite(8, HIGH); }   
   if (stato7 == HIGH) {digitalWrite(8, LOW);}
itoa(stati,invio,10);


    Udp.sendPacket( invio, remoteIp, remotePort);
 
  delay(500);
}
222  International / Generale / non riesco a capire il problema on: March 09, 2011, 06:18:24 am
Rieccomi qua dopo 2 mesi a rompervi le scatole con il mio progetto!
Innanzitutto buongiorno!
Allora dopo varie peripezie sono riuscito a montare il mio progetto, si trata di un controllo remoto di una pompa di un pozzo. ve lo descrivo brevemente
in pratica devo controllare una pompa d'acqua ad 1 km di distanza dall'abitazione per riempire la cisterna. Quindi ho preso 2 arduino 2009 con le sheild ethernet, 2 access point in configurazione bridge point-point e ho scritto un piccolo codice che sfrutta il protocollo UDP
il primo arduino deve semplicemente inviare il comando di accensione della pompa del pozzo , oppure aprire la saracinesca dell'acquedotto (nel caso che non ci sia + acqua, si sia rotta la pompa, ecc), l'altro arduino invece deve inviare dei segnali di controllo (poma ON, acquedotto ON, Assenza energia elettrica, avaria pompa)

montanto a casa tutto funzionava, adesso no! cioè...funziona per qualche giorno...poi l'arduino si pianta! (ho pensato ad un problema di comunicazione tra gli access point, ma si pingano con 1ms di media! e poi ho messo contantore di pacchetti persi, non è quello il problema)! semplicemente smette di funzionare e non riconosce + gli ingressi...e devo andare con la macchina su per i campi a premere il tasto reset!
Quale è il problema secondo voi? devo inserire un watchdog?

ora posto il codice
223  Forum 2005-2010 (read only) / Italiano / Re: plafoniera led alta potenza: lista della spesa on: December 18, 2010, 04:03:11 am
led da 10W l'uno mi sembra eccessivo...con 10 led arrivi a 100Watt......
sei sicuro anche delle tensioni? i led in genere lavorano a 1,2 volt...1,5...2 ....ma 10 volt ??
cmq se consumano 700mA l'uno, con 10led avresti 7 Ampere.....ti serve anche un cavo abbastanza grosso
prima di procedere all'acquisto dei MOS, ecc, rifarei i conti sui LED...
ovvio che per 7A ti servono poi alimentatori grossotti, o stabilizzatori tipo LM317
224  Forum 2005-2010 (read only) / Italiano / Re: Aiuto: Serial port not found on: December 18, 2010, 07:59:57 am
mmmmm mi sembra molto macchinosa come cosa...hai un problema o col Java...o con il bluetooth!
225  Forum 2005-2010 (read only) / Italiano / Re: Aiuto: Serial port not found on: December 18, 2010, 03:47:27 am
Per sicurezza prima prova arduino senza altre schede aggiuntive tipo Ethernet e simili, ricordando di infilare sempre arduino nella solita porta USB, e ricordandoti di selezionare sempre la solita com (ad esempio la smiley-cool in windows che potrebbe segnartene molte (a me per esempio gli arduini vanno su com8, 9, 10), mentre se sei con linux hai solo USBtoCom, e a volta si disconnette da solo, ma basta staccare e riattaccare la USB e riselezionare la porta da tools
Pages: 1 ... 13 14 [15] 16 17