Show Posts
Pages: 1 [2] 3 4 5
16  International / Generale / Re: Far misurare tempo ad arduino (ms) on: April 19, 2013, 01:31:28 am
Ciao, sisi...questo lo so...chiedevo se è così la sintassi corretta (in grassetto):



void getTime(){
float ms = 0.0
digitalWrite(relay, HIGH);
duration = pulseIn(rete, HIGH,2000000);
ms = duration/1000;

digitalWrite(relay, LOW);
lcd.setCursor(0,0);
lcd.print("tempo di intervento: ");
lcd.print(ms);
lcd.print("ms")
return;
}
17  International / Generale / Re: Far misurare tempo ad arduino (ms) on: April 18, 2013, 11:20:09 am
La pulseIn prevede già il timeout, predefinito a 10s ma impostabile all'intervallo che vuoi. Nel link che ti ho passato c'è scritto.

Ok...perdonami...ho letto ma mi è sfuggita la questione timeout....oppure google translate traducendomi la pagina me l'ha fatto intendere per altro...
rileggendo infatti mi sono reso conto meglio....quindi in questo caso volendo un timeout di 2secondi dovrei scrivere:
Code:
duration = pulseIn(rete, HIGH,2000);
giusto?

Edit: dimenticavo, sul reference dice che il pulseIn lavora in microsecondi.... quindi possibile che dovrei scrivere
Code:
duration = pulseIn(rete, HIGH, 2000000):

??? e per avere il rispettivo valore in ms della durata dell'impulso forse dovrei fare una cosa tipo ms=duration/1000...?
18  International / Generale / Re: Far misurare tempo ad arduino (ms) on: April 18, 2013, 07:47:34 am
Ciao, grazie a tutti per le risposte....quello che devo fare effettivamente è un tester automatico per verificare gli interruttori differenziali di casa, quindi una delle funzioni di questo tester (tralasciando la misura della tensione di rete e relativo settaggio di un potenziometro digitale per avere esattamente 30mA di dispersione verso terra) è quella di chiudere un contatto (mettendo in dispersione la fase verso terra) e misurare il tempo intercorso dalla chiusura del contatto all'intervento del differenziale. quindi vediamo se ci ho capito qualcosa...se io devo misurare il tempo intercorso fra l'accensione del relè sul pin 1 e l'intervento del differenziale (tramite optoisolatore su trasformatore) sul pin 2 devo scrivere così:

Code:
#include <LiquidCrystal.h>
int led = 0;
int relay = 1;
int rete = 2;
int testbtn = 3;
int RS = 4;
int EN = 5;
int D4 = 6;
int D5 = 7;
int D6 = 8;
int D7 = 9;

unsigned long duration;

LiquidCrystal lcd(RS, EN, D4, D5, D6, D7);

void setup(){
  pinMode(relay, OUTPUT);
  pinMode(rete, INPUT);
  pinMode(testbtn, INPUT);
  lcd.begin(16,2);
}

void loop(){
  if(testbtn==HIGH){
  getTime();
  }
}

void getTime(){
digitalWrite(relay, HIGH);
duration = pulseIn(rete, HIGH);
digitalWrite(relay, LOW);
lcd.setCursor(0,0);
lcd.print("tempo di intervento: ");
lcd.print(duration);
lcd.print("ms")
return;
}
così praticamente premendo il tasto TEST avrei il relè che si attiva mettendo in dispersione la fase verso terra quindi dovrebbe intervenire il differenziale....il "duration = pulseIn(rete, HIGH);" conta quanti ms intercorrono da quando è stato messo in dispersione l'impianto e quando interviene il differenziale e successivamente disattiva il relè che si occupa di mettere in dispersione. Ma adesso mi sorge un altro dubbio, mettendo caso il differenziale non interviene il programma così si blocca sul pulseIn...sbaglio? come posso mettere un timeout per fare in modo che se non risponde entro ad esempio 2 secondi interrompe la dispersione e restituisce il messaggio di test fallito?
19  International / Generale / Far misurare tempo ad arduino (ms) on: April 18, 2013, 03:03:55 am
Salve a tutti ragazzi, sto realizzando un progettino e ho necessità di far misurare il tempo ad arduino e restituirlo su lcd....per lcd ecc nessun problema, per la misura del tempo invece si....praticamente devo misurare il più esattamente possibile il tempo che intercorre fra un comando impartito da arduino (es. accensione relè su pin 4) e un'evento su un altro pin...ad esempio la variazione di stato di un altro pin (da high a low o viceversa), poi il programma deve confrontare con dei valori all'interno del codice e restituire tutto su lcd....ma non so da dove partire per la misura del tempo...dovrei riuscire a misurare tempi che variano dai 2 ai 200 ms, con una discreta accuratezza, ho letto che c'è un comando pulsein o che si può fare con  l'interrupt ma nulla che spieghi bene come si fa...ringrazio anticipatamente tutti coloro che mi daranno una mano. smiley Buona giornata
20  International / Generale / Re: Voltmetro con arduino e lettura su partitore di tensione on: March 07, 2013, 08:16:43 pm
salve ragazzi, ho quasi finito, ma ho un problema...mi sono accorto con il map che va con i numeri interi....ma io vorrei visualizzare almeno il mezzo volt ecc... quindi ho deciso di fare così ad esempio:
Code:
const int partitore = A0;
float voltage = 0.00;

void loop(){
lettura = analogRead(partitore);
voltage=(50/1024)*lettura //50 sono i volts di soglia che utilizzo...l'ho abbassata per aumentare la precisione
}
presumo sia corretto...ma non capisco perchè mi visualizza solo numeri interi con la virgola tipo 20.00 ....come posso fare per fargli visualizzare anche i decimali con una discreta precisione? grazie in anticipo...un saluto

edit by mod:
per favore usa gli appositi tag per includere il codice
21  International / Generale / Re: 4 Arduino Master Slave in RS485 on: March 07, 2013, 08:08:58 pm
Quote
Non capisco il problema nello spedire 1 byte e nell'interpretarlo come un comando. Speditelo con ModBus o con qualsiasi altro protocollo, ma alla fine si tratta di ricevere qualcosa e fare un'azione.

Quando spedite la lettera "A" dal computer e fate accendere un led sull'Arduino non avete spedito 1 byte ed interpretato questo byte come un "comando"?
Caro Leo io quello che non riesco a capire è proprio questo ,se io mi invento un miniprotocollino dove decido che :

byte "a" significa accendi led2       byte  "d"  significa spegni led2
byte "b" significa accendi led3       byte  "e"  significa spegni led3
byte "c" significa accendi led4       byte  "f"  significa spegni led4

...a questo punto come fare il passo da gigante per decidere di mandare i byte con il formato
Quote
Byte 1: Start Byte ( 0 hexadecimal ).
Byte 2-3: ASCII Arduino's address.
Byte 4: Byte ENQ, ACK or NAK (0x05h, 0x06h y 0x15h) .
Byte 5: ASCII Requested command.
Byte 6 y 7: ASCII Function number.
Byte 8: Sign byte (Positive 0x20h y Negative 2D)
Byte 9-12: ASCII of data bytes (0x00h-0xFFFFh)
Byte 13: Byte EOT (End of Text) (0x03h)
Byte 14-15: Checksum (addition from 2nd byte to 13th byte)
...o meglio io vorrei un piccolo esempio dove un master con Address "0x00"  invia un semplicissimo comando ad uno slave "0x01" e gli dice di accendere un led sul pin 13 per un secondo e lo spegne dopo un secondo...

MASTER "0x00"  invia Byte "accendi led pin13" a SLAVE"0x01"  come dovrebbe essere questo comando ??
Scusate ma proprio non riesco a capirlo e la volontà non mi manca...
Qualcuno che per favore ci scriva un esempio per il comando sopra citato...


Ragazzi, io sono nelle stesse condizioni di pietro....sono diplomato geometra...non sono ingegnere elettronico...quindi quello che bene o male so...l'ho imparato dagli esempi commentati...(ottimo strumento didattico a mio avviso), questo protocollo per me è qualcosa fuori dagli schemi....io penso che se avessimo due sketch(uno per il master e uno per lo slave) con gli integer dichiarati, il void setup e nel void loop anche solo un comando che invia una serie di byte alla pressione di un pulsante e lo slave che esegue e restituisce risposta penso che potremmo metterci in moto anche noi...non voglio essere polemico ma inviare una "a" con il serial.write e leggerla con il serial.read è tutto un'altro discorso dall'inviare una serie di byte, integrare checksum e quant'altro e gestire il timeout....può apparentemente sembrare facile per chi sa farlo....personalmente non ne sono capace al momento...magari fra un mesetto vi dirò...ma si...che ci voleva....ma al momento no...purtroppo...
22  International / Generale / Re: 4 Arduino Master Slave in RS485 on: March 06, 2013, 05:54:14 pm
Quote from: leo72
Prendi il codice del ModBus e studialo, non c'è nulla di astruso dietro. Si tratta di spedire dei byte e dargli un significato.
Quando tu leggi un sensore, i dati che ricevi hanno un significato per te, giusto? Eppure, sei tu a darglielo, di per sé quelli sono solo numeri.  smiley-wink

Per quanto riguarda il Modbus ci stavo lavorando io....ma sinceramente non capisco come inviare e ricevere i dati....cioè...come fargli inviare un determinato dato o una lettura di un sensore e agire di conseguenza per me è un mistero...lo reputo troppo complicato...forse anche per l'esigenza di "adattare" il protocollo a qualcosa di commerciale...non so...
23  International / Generale / Re: 4 Arduino Master Slave in RS485 on: March 05, 2013, 05:20:04 pm
Peppe91...dove sei...
eccomi...io ci sono...purtroppo ho avuto un po di impegni e ho trascurato questo topic...non mi ero nemmeno accorto che lo avevate "riesumato"...io ancora non ho sviluppato nulla...al momento mi sto concentrando sul webserver PHP da connettere via rs232 ad arduino master....purtroppo sulla seriale sto a zero...
24  International / Generale / Re: programmare arduino da remoto on: March 03, 2013, 08:45:32 am
leggi qui: http://www.ioprogrammo.it/php/php_lanciare_un_eseguibile-t966.0.html forse può esserti d'aiuto...
25  International / Generale / Re: programmare arduino da remoto on: March 03, 2013, 06:35:19 am
Che io sappia il php ha la possibilità di comunicare dati via seriale....ma forse dovresti crearti l'applicativo simile all'IDE all'interno della pagina php, l'IDE di arduino compila il codice in Hex prima di inviarlo all'atmega quindi dovresti prevedere anche questo...premetto che io non so com'è scritto l'IDE quindi non so quanto fondato possa essere ciò che dico....
26  International / Generale / Re: Voltmetro con arduino e lettura su partitore di tensione on: March 02, 2013, 06:29:01 pm
si uwefed, ne sono consapevole, per l'applicazione in cui verrà utilizzato non sono importanti centesimi ecc... smiley quindi va benissimo così grazie 1000;)
leo grazie 1000 ancora per l'aiuto, e grazie soprattutto per avermi fatto scoprire la funzione map...a me ignota e a quanto pare ignota anche ai manuali su arduino letti fino ad ora... smiley-wink un saluto e un sincero grazie a tutti voi che mi avete aiutato... buonanotte.
27  International / Generale / Re: Voltmetro con arduino e lettura su partitore di tensione on: March 02, 2013, 06:19:32 pm
Ho letto il reference sulla map....non ho capito cos'è 800....forse ho intuito, ma preferisco una conferma da parte tua...dunque considerando sempre resistenze ideali 3,22V è il 64,4% di 5V quindi 775 è il 64,4% di 1024....intendevi questo con 800? quindi facendo:
tensione = map(lettura,0,755,0,3.22);
dovrei avere la corrispondente...adesso mi sorge un dubbio...così io sto specificando che il 3,22V è pari a 755 e 0 è pari a 0..giusto?...ma per la lettura di tensione come dovrei comportarmi? devo scrivere qualcosa che mi interpreti la lettura convertendomela nel mio valore in volts...in questo caso applicando la tensione di 3,22 all'input analogico avrei che la tensione fornita all'input fa valere la lettura analogica 755 e quindi il parametro lettura restituisce un valore di 3,22 giusto? ma se io utilizzassi
tensione = map(lettura0,755,0,70.00);
avendo la stessa tensione in ingresso (da 0 a 3,22 e quindi da 0 a 755), questa volta non avrei un valore che va da 0 a 70V?
intanto ho trovato anche questo che utilizza il partitore: http://arduinoprojects101.com/arduino-voltmeter/
grazie ancora per l'aiuto...
28  International / Generale / Re: Voltmetro con arduino e lettura su partitore di tensione on: March 02, 2013, 05:28:46 pm
potrei anche ridurre l'impedenza mantenendo gli stessi valori di tensione in ingresso....ad esempio 56K e 2,7K o 560ohm e 27 ohm...sempre 3,22V erogano...il problema reale ce l'ho nella "proporzionale matematica"... smiley leo72, mi potresti far vedere qualche esempio utilizzando le resistenze del partitore come "resistenze ideali" e quindi esatte senza errori del 5% ecc...poi farò le varie prove confrontando con un multimetro per settare correttamente il tutto...a parte che in matematica non sono molto ferrato... smiley-lol comunque mi è più che sufficiente una lettura di xx,xx Volt anche se non è precisissima...ma in linea di massima...grazie intanto per l'aiuto...
29  International / Generale / Voltmetro con arduino e lettura su partitore di tensione on: March 02, 2013, 04:56:48 pm
Salve a tutti ragazzi, voglio costruire un voltmetro 0-70 VDC con partitore resistivo,
dove R1 = 560Kohm e R2 = 27Kohm
quindi in andata all'input analogico di arduino avremo un'uscita che varia da 0V a 3,220V
ovviamente non utilizzo un partitore che mi faccia andare direttamente all'input analogico 5V ma mi mantengo al di sotto per garantirne la sicurezza in modo che se la tensione dovesse superare i 70 volt non brucio il pin dell'arduino, il problema adesso sta nella "decodifica" del valore letto
come faccio a far visualizzare su un lcd la tensione letta?...l'lcd lo so gestire...è la parte di conversione che non riesco a fare....chiedo aiuto a voi....vi ringrazio in anticipo per le risposte. un saluto
30  International / Generale / Re: Domanda PIN 0 e PIN 1 on: March 02, 2013, 02:25:37 pm
Vabbè, da quello che so si posso usare come out digitali anche se usi la seriale, l'importante è che prima di utilizzarli invii il comando Serial.end() termini la comunicazione seriale e li utilizzi come out digitali...sbaglio?
Pages: 1 [2] 3 4 5