Recent Posts

Pages: 1 2 [3] 4 5 ... 10
21
Generale / Re: comunicazione seriale tra ...
Last post by Standardoil - Today at 12:06 pm
Sai creare una struct?
22
Français / Re: [Résolu] PROJET ARDUINO (A...
Last post by kiofu - Today at 12:06 pm
Bonjour,
Pour les volets on attendra septembre

Pour openhab et tes prises l'intérêt et de faire des scènes

Si c'est juste pour allumer  iftt suffit selon moi

À plus tard
23
Français / Re: Mesure volume restant dans...
Last post by Boby71C - Today at 12:06 pm
Bonjour à tous,
Malgré mes recherches et mes nombreux essais, toujours pas le résultat attendu.
Il y a de l'amélioration, j'arrive à afficher:
Haut eau 112 Cm
Volume 0,00 L

Il y a certainement une erreur dans ma formule ou la déclaration des variables, mais je sèche lamentablement.
J'ai suivi les conseils de jt68 mais le résultat final n'y est pas. Ça m'a quant même permis de mieux comprendre l'ordre des lignes de code. Je pense que malgré cela, ça ne doit pas être au top

Mon dernier code.
Code: [Select]
//*Prise de niveau cuve 1000 litres*//
#include <LiquidCrystal.h>

LiquidCrystal lcd(12,11,5,4,3,2);

int trig = 8;
int echo = 9;
long lecture_echo;
long Cm;
long Litres;
double HautEau = 0,HCSRpos = 0, HCSRres = 0;
double Resultat;

void setup(){

pinMode(trig, OUTPUT);
digitalWrite(trig, LOW);
pinMode(echo, INPUT);
Serial.begin(9600);
lcd.begin(16,2);
lcd.setCursor(3,0);// écrit à partir de la 4 éme case
lcd.print ("Niveau cuve");// écrit Niveau cuve
delay (3000);// pendant 3 secondes
lcd.clear();// efface le LCD
}

void loop(){

digitalWrite(trig, HIGH);
delayMicroseconds(10);
digitalWrite(trig, LOW);
lecture_echo = pulseIn(echo,HIGH);
Cm = lecture_echo /58;
Serial.print("Hauteur d' eau: ");
Serial.println(Cm);
Serial.print("Cm ");
lcd.setCursor (0,0);// commence l'écriture à la 1 ére case
lcd.print ("Haut eau: ");// écrit Haut eau:
lcd.setCursor (10,0);// continue à la 10 éme case ligne 1 pour écrir la distance trouvée
lcd.print (Cm);// écrit la valeur de la mesure trouvée
lcd.setCursor (14,0);// continue à la 14 éme case ligne 1
lcd.print ("CM");// écrit CM
lcd.setCursor (0,1);// commence l'écriture à la 1 ére case de la ligne 2
lcd.print ("Volume: ");// écrit Volume:
lcd.setCursor (8,1);// continue à la 8 éme case ligne 1 de la ligne 2 pour écrir Volume:
Serial.print("Volume d' eau: ");
//==========partie qui ne fonctionne pas. Affiche 0,00==========

//HautEau = 112-25;

HautEau = HCSRpos-HCSRres;// Calcul la hauteur d'eau restante ( haut ou est positionné le HCSR moins haut mesurée )ceci nous donne la haut d'eau dans la cule
// sachant que 1 cm d'eau représente 10 Litres
Resultat = HautEau*10;// Calcul le résultat final en multipliant par 10 Litres
lcd.print (Resultat);// ?? pour l'instant n'affiche que 0,00 ??
lcd.print (" L");// écrit L pour Litres
//Serial.println(Litres);

Serial.println(Resultat);
Serial.print("Litres ");
delay(2000);// rafraichissement toutes les 2 secondes
lcd.clear();// efface le LCD
}


Merci à tous pour votre aide précieuse
@+
Robert
24
Are you sure?  That's not how it works for me.  Using SerialMonitor with line ending set to "No line ending" I get this behavior:
send 'a': light turns on
send 'b': light starts blinking and continues to blink
send any other character: light turns off
That is what the sketch is telling it to do and that is what it does on my Arduino UNO.

If the line ending is set to Newline, 'a' turns the light on very briefly and 'b' blinks once. Because Newline is neither 'a' nor 'b' it turns the light off when it is received.
yes, but let me simplify more the behavior I am talking about, if you write the following code:
Code: [Select]


void setup()
 {
  Serial.begin(9600); // setting the serial port speed to 9600
  pinMode(13, OUTPUT); // declaring pin 13 as an output
 }

 char letter;
 
 void loop()
 {
   if(Serial.available()>0)
   {
     letter = Serial.read();
   }
     if(letter == 'a')
     {
       digitalWrite(13, HIGH);
     }
  
 }


the LED turns ON when you send 'a', and if you press any other letter it won't turn OFF, it will still be ON.
but if you write the following code:
Code: [Select]



void setup()
 {
  Serial.begin(9600); // setting the serial port speed to 9600
  pinMode(13, OUTPUT); // declaring pin 13 as an output
 }

 char letter;
 
 void loop()
 {
   if(Serial.available()>0)
   {
     letter = Serial.read();
   }
     if(letter == 'a')
     {
       digitalWrite(13, HIGH);
       delay(500);
       digitalWrite(13, LOW);
       delay(500);
     }
  
 }

 

when you send 'a' it will blink the LED, but if you send any other letter it will stop blinking. which is unlike the first code where sending any other letter does nothing.

Also, can you explain to me what you mean by " No line ending" I am still new to the arduino and didn't
understand it.

and thank you for time.
25
Generale / Re: comunicazione seriale tra ...
Last post by birrohgt - Today at 12:05 pm
Puoi fare i seguenti passi:
1) rendi i numeri da trasmettere del tipo più piccolo che permette di contenere il loro valore massimo (es. se un int non supererà mai 100 basta che sia di tipo byte)
2) se usi float corti e a composizione fissa(3 cifre, 1 cifra o altro simile max 4 cifre in tutto) puoi moltiplicarne il valore per 10 o 100 e castarli ad intero
3)dopo aver usato i punti 1 e 2 per ridurre al minimo i byte necessari (essendo questo lo scopo di base) puoi trasferirli con Serial.write(), che invia i byte che compongono il numero
4) sull'altro Arduino leggi connla read() e poi... Giochi con i bit per riempire le variabili
scusa non capisco cosa vuoi dire "Giochi con i bit per riempire le variabili"
come faccio in ricezione ad abbinare le varie variabili?
26
More than "a few" actually!  Most that do not auto-range.
I believe that is correct, with manual range the positions on the rotary switch are needed for other ranges. The value shown on the display is usually neither volt or ohm (Aneng V7 is smarter).
27
Français / Re: Libérer pin 4 sur Arduino ...
Last post by tom278 - Today at 12:02 pm
Ça ne fonctionne pas et n'aillant plus le temps de trouver une solution dans le soft, j'ai modifié le PCB et tout fonctionne parfaitement.
28
What is the 100 doing here?  I thought we were using binary values.
29
Generale / Re: comunicazione seriale tra ...
Last post by Silente - Today at 11:57 am
Puoi fare i seguenti passi:
1) rendi i numeri da trasmettere del tipo più piccolo che permette di contenere il loro valore massimo (es. se un int non supererà mai 100 basta che sia di tipo byte)
2) se usi float corti e a composizione fissa(3 cifre, 1 cifra o altro simile max 4 cifre in tutto) puoi moltiplicarne il valore per 10 o 100 e castarli ad intero
3)dopo aver usato i punti 1 e 2 per ridurre al minimo i byte necessari (essendo questo lo scopo di base) puoi trasferirli con Serial.write(), che invia i byte che compongono il numero
4) sull'altro Arduino leggi connla read() e poi... Giochi con i bit per riempire le variabili
30
I reckon this code
Code: [Select]
void loop()
{
  noInterrupts();
  long int count=encoderCount;
  interrupts();  
  if (count>=39900)Serial.println(encoderCount);                              
}

is disabling interrupts much too frequently.

Try putting delay(1000); in loop()

A more sophisticated approach would be for the interrupt to set a flag at intervals - perhaps every 400 counts and then the code in loop() can check that flag before deciding to read the value of encoderCount. There is no need to disable interrupts to check a byte variable.

...R
Pages: 1 2 [3] 4 5 ... 10