Pages: 1 2 [3]   Go Down
Author Topic: Progetto Arduino e OpenEnergyMonitor. Condensatore elettrolitico  (Read 3750 times)
0 Members and 1 Guest are viewing this topic.
Switzerland
Online Online
Faraday Member
**
Karma: 116
Posts: 6020
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

E' un vecchio bug ... (che pensavo non ci fosse più, ma vedo che il trucco della variabile inutile funziona ancora e quindi .. si vede che il bug è sempre li ... smiley-lol )

In ogni caso ... è la GIUSTA PUNIZIONE per chi non dichiara le funzioni prima di utilizzarle ...  smiley-twist smiley-twist smiley-twist

Guglielmo
Logged

Search is Your friend ... or I am Your enemy !

0
Offline Offline
Sr. Member
****
Karma: 4
Posts: 485
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

In ogni caso ... è la GIUSTA PUNIZIONE per chi non dichiara le funzioni prima di utilizzarle ...  smiley-twist smiley-twist smiley-twist

 smiley-lol smiley-lol

A me invece è successo che usando una funzione prima di dichiararla mi ha dato errore in fase di compilazione.
Per cui adesso dichiaro sempre prima usare anche per chiarezza del codice.

Invece il punto e virgola obbligatorio a fine riga mi sembra una vera e propria fesseria, utile forse nei primi anni 70 quando un editor decente era una eccezione, totalmente inutile oggi, soprattutto la sua obbligatorietà.
Logged

Switzerland
Online Online
Faraday Member
**
Karma: 116
Posts: 6020
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

...
Invece il punto e virgola obbligatorio a fine riga mi sembra una vera e propria fesseria, utile forse nei primi anni 70 quando un editor decente era una eccezione, totalmente inutile oggi, soprattutto la sua obbligatorietà.

NON è a fine riga, ma indica la fine dello STATEMENT !

Code:
if (a == b)
  a++;

Ecco, il ";" ti indica la fine dello STATEMENT che, come vedi, è scritto su più righe. Serve fondamentalmente ad evitare ambiguità ...

Code:
if (a==b)
  a++
  b++

... cosa capirebbe il compilatore ? Come farebbe a sapere quali istruzioni eseguire dopo l'IF ?

Guglielmo
Logged

Search is Your friend ... or I am Your enemy !

0
Offline Offline
Sr. Member
****
Karma: 4
Posts: 485
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Credo che il ritorno carrello dovrebbe bastare per cui nell'esempio che hai fatto il compilatore dovrebbe sapere che se non incontra una graffa dopo la condizione dell'if quello che deve fare è esclusivamente la riga seguente e basta. Non vedo alcuna ambiguità.

E' vero che il punto e virgola segna la fine dello statement ma serviva perché sulla stessa riga si potevano mettere altre istruzioni. Volendo si potrebbe mettere tutto in un'unica riga.
Logged

Switzerland
Online Online
Faraday Member
**
Karma: 116
Posts: 6020
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Credo che il ritorno carrello dovrebbe bastare per cui nell'esempio che hai fatto il compilatore dovrebbe sapere che se non incontra una graffa dopo la condizione dell'if quello che deve fare è esclusivamente la riga seguente e basta. Non vedo alcuna ambiguità.

... quello era un esempio, poi ce ne possono essere svariati altri meno banali da interpretare ... poi ovvio, tutto si può "rendere più complesso", incluso il compilatore stesso. smiley  In ogni caso, secondo me invece, aumenta la leggibiltà ... smiley-wink

E' vero che il punto e virgola segna la fine dello statement ma serviva perché sulla stessa riga si potevano mettere altre istruzioni. Volendo si potrebbe mettere tutto in un'unica riga.

... ed ancora una volta avresti casi di ambiguità che, per essere risolti, incrementerebbero inutilmente la complessità del compilatore e renderebbero sempre peggiore la leggibilità.

Guglielmo
Logged

Search is Your friend ... or I am Your enemy !

Offline Offline
Newbie
*
Karma: 0
Posts: 10
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Per Andreataba
Ho provato il tuo sketch, e funziona. Va in internet e si collega sul mio account emoncms.
Grazie per il tuo aiuto.
Logged

Offline Offline
Jr. Member
**
Karma: 1
Posts: 77
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Per Andreataba
Ho provato il tuo sketch, e funziona. Va in internet e si collega sul mio account emoncms.
Grazie per il tuo aiuto.
Di niente figurati!!
Se hai bisogno di altro aiuto scrivi pure, se posso aiutare volentieri! 
Logged

0
Offline Offline
Edison Member
*
Karma: 24
Posts: 2319
Have you mooed today?
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

[OT]

Quote
Per Andreataba
[...]
Grazie per il tuo aiuto.

..che bello quando uno apre un topic per chiedere un aiuto, e poi è lui stesso a fornirlo  smiley-grin
Bravo Andrea!
[/OT]
Logged

Offline Offline
Jr. Member
**
Karma: 1
Posts: 77
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset


Figurati, è per me un piacere aiutare qualcuno quando posso!

Il trimmer multigiri è una resistenza variabile, ti permette di ottenere un valore che non otterresti con le resistenze standard. Esempio, non troverai mai una resistenza da 31 ohm (forse in ambito professionale?), con un trimmer invece puoi regolare il valore a te più ideale.
Attenzione però, io ho specificato un "multigiri", esistono trimmer non multigiri la cui regolazione è più complicata. Con un trimmer standard puoi ad esempio fare al massimo un giro della vitina spaziando da 0 a 50 ohm. Un miltigiri invece, ha la vitina che può fare anche più di 10 giri avendo la possibilità di regolare più finemente il valore.
A differenza della resistenze che hanno 2 terminali, i trimmer hanno 3 terminali tu dovrai utilizzare quello centrale ed uno di quelli esterni. Ci colleghi un multimetro e girando la vitina vedrai la resistenza che varia.
Sempre il trimmer ti permetterà ad esempio (attenzione, i numeri sono casuali, è solo un esempio) di regolare meglio la tensione che fornirai ad arduino (la sonda produce corrente, la resistenza, o il trimmer nel tuo caso "trasforma" la corrente in tensione) come da schema del progetto. Ad esempio, con 10A di carico (ipotizzando che a te interessa misurare con precisione correnti attorno ai 10A) la sonda collegata a resistenza da 33ohm ti da 0.897 volt. Con la resistenza variabile, potrai regolare in modo da avere 1V. Diciamo che puoi ottimizzare ulteriormente il valore da dare in pasto ad arduino.
Attenzione però a non esagerare e fornire più di 5 volt.

 

Dunque, sto cercando di ultimare il mio progetto includendo il sensore di corrente ma qualcosa non quadra..
ho acquistato il trimmer multigiri, collegato ad un multimetro e calibrato sui 33ohm (https://lh5.googleusercontent.com/-8UbK3Fo8Mo8/UOdRNFqVq0I/AAAAAAAAGT4/-G9KOFP-Mhw/s504/12.png) io sto utilizzando il sensore SCT 013 - 000 .

Ho fatto tutti i collegamenti come da foto allegata


ho caricato questo sketch e il risultato è un valore analogico del sensore sul pin A2 che è fisso a 16 e un valore di Power che varia da 10 a 20 in continuazione con nessuna differenza se io collego un fornelletto o meno alla ciabatta di cui sto misurando la corrente.

Qualcuno riesce a capire l'inghippo??

Code:
// Include Emon Library
#include "EmonLib.h"                   

//Calibrations
const int volt = 220;
const float ct_calibration = 29;
//Sensor pins
const int currentSensorPin = A2;
float Irms = 0;

// Create an Emon instance
EnergyMonitor emon1;                   

void setup() {
  // start serial port:
  Serial.begin(9600);
  Serial.println("Sensors test starting...");

  //initialize Emon instance
  emon1.current(currentSensorPin, ct_calibration);
}

void loop() {
 
  //read sensors
  Irms = emon1.calcIrms(1480);

  //print values
  Serial.print("Power : ");
  Serial.println(Irms*volt);
  Serial.println(currentSensorPin);

}


p.s. collegando il multimetro ai due cavi del sensore dovrei riuscire a vedere l'output di corrente in ampere che il sensore da? perchè il multimetro non da segni di vita..
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 335
Posts: 23122
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Credo che il ritorno carrello dovrebbe bastare
Anche se brutto da vedere, puoi scrivere più istruzioni su una singola riga. Senza un segno di fine istruzione si creerebbe un pò di casino...
Quello che segue è un codice valido, anche se inguardabile
Code:
void loop() {
  byte a = 0;
  a++; if (a == 1) a--;
}
Togli il ;

Code:
void loop() {
  byte a = 0;
  a++ if (a == 1) a--
}
Logged


0
Offline Offline
Sr. Member
****
Karma: 4
Posts: 485
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Anche altri linguaggi hanno il fine istruzione per separare istruzioni sulla stessa riga ma non è obbligatorio.

C'è il C# che, come il C, richiede il ;
Però in rete esistono dei traduttori che trascrivono il codice in equivalente VB.NET il quale non richiede affatto il ;
E' anche possibile il contrario.

E quindi possibilissimo scrivere codice senza alcun terminatore.

Però stiamo finendo in un flame!
Logged

Pages: 1 2 [3]   Go Up
Jump to: