Bac-Ka-Poux-Bêle 2019-2020

0x0.75x1.61 = 0
mais tu vas te faire engueuler....

Bonjour je suis élève de STI2D SIN et j'aurais besoin d'un programme pour remettre a zéro mon codeur incrémentale (car celui ci n'en n'a pas ) une fois qu'un capteur fin de course est activé. j'ai déjà fait un programme pour le codeur que voici :

#define pin 4
int res_codeur=6335;
float angle;
byte etat;
void setup() {
pinMode(9,INPUT);
pinMode(10,INPUT);
attachInterrupt(0,calculangle,RISING); //l’interruption stoppe momentanément les travaux de la boucle loop pour effectuer le calcul de l'angle
Serial.begin(9600);
}

void calculangle()
{

etat=digitalRead(3);

if(etat==1)
{
angle=angle+0.05;
}
else
{
angle=angle-0.05;
}
if
{
interrupteur=1
}
}

void loop() {
Serial.print("etat");
Serial.println(etat);
Serial.println(angle);
}

Crée un fil de discussion séparé pour ton problème afin de ne pas mélanger les réponses, sinon on n'y comprendra rien très rapidement. Demande au modérateur (bouton 'report to moderator' en bas de ton message)

Non, la variable Rotations est incrémentée dans la routine d'interruption : si le programme y rentre la valeur devrait augmenter.

Ici, tu n'as pas besoin des parenthèses, mais ça ne doit pas changer grand chose :

#define WindSensorPin (2)

Tu devrais ôter le second delay(5000), celui dans les instructions d'affichage.

Où as-tu trouvé le code ?

pomme-poire:
mais tu vas te faire engueuler....

Parce qu'il a mis une majuscule à Code?

oui pour les deux
donne voir ton schéma électrique ?

et aussi pour le code posté en vrac dans le corps du message , sans balises correctement utilisées
c'est un truc à finir au bakapoupel :frowning:

AdrienBarbin arrive, est-ce trop demander que de l'inviter à bien lire les consignes et s'assurer que le balisage a produit son effet. ?

C'est une Minuscule erreur

je me disais que ça allait tomber.....

erreur facile à corriger avec un peu de bonne volonté
Il faut être pragmatique , cette précaution augmente le nombre de lecteurs ... et les chances de réponses .
cf "Bien éditer son post pour les nuls"

C'est de plus la 6e règle du Forum

Je souhaiterais comprendre mes erreurs/avoir des corrections.

Quand on écrit cela, il vaut mieux éviter se se mettre un handicap en réduisant les possibilités de réponses

bonjour

j'ai un problème a réaliser un code qui permet de déclencher arrosage a travers un smartphone.

voila le code qui permet de connaitre l'etat du sol a travers gsm .

#include <SoftwareSerial.h>

SoftwareSerial mySerial(7, 8);

//int activer = 1; // ordre d'envoyer SMS

int val;

int l=13;

int i=0;

int secCount = 0;

int humideCount = 0;

int tropHumideCount = 0;

const int MAX_SMS_SENT = 2;

void setup()

{

pinMode(13, OUTPUT);

mySerial.begin(19200);

Serial.begin(19200);

delay(500);

}

void loop()

{

val=analogRead(A0);

String etat;

Serial.print ("valeur est:");

Serial.println(val);

delay(100);

if (val <=400){

etat="sec";

while(secCount < MAX_SMS_SENT){

Serial.print ("\n secCount est : ");

Serial.println(secCount);

digitalWrite(13,HIGH);

//Pour envoyer un sms sous forme de texte

mySerial.print("AT+CMGF=1\r");

delay(100);

//Numero de telephone du destinataire

mySerial.println("AT + CMGS = "numero"");

delay(100);

mySerial.println("Alerte le sol est sec: ");

delay(100);

mySerial.println((char)26); // 26 equivalent ASCII de ctrl+z (fin du message:CTRL-Z)

delay(100);

mySerial.println("c'est fait.");

secCount++;

}

}

if(val>400 && val<700){

etat="humide";

while(humideCount < MAX_SMS_SENT){

Serial.print ("\n humideCount est : ");

Serial.println(humideCount);

digitalWrite(13,HIGH);

//Pour envoyer un sms sous forme de texte

mySerial.print("AT+CMGF=1\r");

delay(100);

//Numero de telephone du destinataire

mySerial.println("AT + CMGS = "numero"");

delay(100);

mySerial.println("Alerte le sol est humide: ");

delay(100);

mySerial.println((char)26); // 26 equivalent ASCII de ctrl+z (fin du message:CTRL-Z)

delay(100);

mySerial.println("c'est fait.");

humideCount++;

}

digitalWrite(13,LOW);

Serial.print("sol est");

Serial. println(etat);

}

if(val >700){

etat="trop";

while(tropHumideCount < MAX_SMS_SENT){

Serial.print ("\n tropHumideCount est : ");

Serial.println(tropHumideCount);

digitalWrite(13,HIGH);

//Pour envoyer un sms sous forme de texte

mySerial.print("AT+CMGF=1\r");

delay(100);

//Numero de telephone du destinataire

mySerial.println("AT + CMGS = "numero "");

delay(100);

mySerial.println("Alerte le sol est trop humide: ");

delay(100);

mySerial.println((char)26); // 26 equivalent ASCII de ctrl+z (fin du message:CTRL-Z)

delay(100);

mySerial.println("c'est fait.");

tropHumideCount++;

}

digitalWrite(13,LOW);

Serial.print("sol est");

Serial. println(etat);

}

delay(1000);

}

je voudrais ajouter le code qui permet de déclencher l'arrosager via gsm

Bonjour,

Pour mon premier projet sur arduino je souhaite afficher la valeur d'un potentiomètre sur un lcd 16*2 en pourcentage ( 0 à 1024 en 0 à 100%). le but par la suite et de contrôler un esc en PWM. Donc la valeur récupérer du potentiomètre serait la puissance moteur.

voici le code de base que j'ai pour afficher un message sur mon lcd:

//Library version:1.1 arduino_499745
#include <Wire.h>
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27, 16, 2); // set the LCD address to 0x27 for a 16 chars and 2 line display
void setup()
{
pinMode(A0,INPUT);
i lcd.init(); // initialize the lcd
lcd.backlight();
lcd.setCursor(12, 0);
lcdprint("100%");
}
void lcdprint(String s) {
for (int i = 0; i < s.length(); i++) lcd.print(s*);*
}
void loop()
{
}
Le problème et que je ne sais pas comment coder pour indiquer au lcd de prendre une valeur x varient entre 0 et 1023 et le convertir en pourcentage.
Merci. :slight_smile:

y’a-t-il la possibilité de communiquer Applicatio arduino avec une base de données ?

Cherche "arduino database" ou "arduino database mysql" avec Google

Lisez les règles d’usage du forum svp

c'est cool à regarder finalement la liste de mauvais posts :slight_smile:

//Library version:1.1 arduino_499745
#include <Wire.h>
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27, 16, 2); // set the LCD address to 0x27 for a 16 chars and 2 line display
void setup()
{
  pinMode(A0,INPUT);
i  lcd.init();                      // initialize the lcd
  lcd.backlight();
  lcd.setCursor(12, 0);
  lcdprint("100%");
}
void lcdprint(String s) { // sert à rien; n'est pas commentée (et vous verrez qu'elle est absude)
  for (int  i = 0; i < s.length(); i++)  lcd.print(s);

}
void loop()
{

// lire la valeur analogique : 10 bits -> uint16_t lu; la conertir en %
// uint16_t pcent = (lu * 25) / 256; // 100% correspond à 1024 -> 25% (5 bits) à 256...
// lcd.print(pcent); lcd.print accepte des entiers comme un grand; positionner curseur où vous voules
}

J-M-L:
c'est cool à regarder finalement la liste de mauvais posts :slight_smile:

Oui, si certains sujets sont fait en même temps ça les mélanges complètement.... une belle salade

:grin:

Quelles horreurs

Bonjour,

Actuellement en terminale STI2D, j'ai un projet qui est d'automatiser un aquarium tropical au travers de différentes tâches :

  • Contrôler le niveau de l'eau
  • Réguler le taux de pH
  • Réguler la température
  • Distribuer de la nourriture aux poissons

Moi, je m'occupe du niveau d'eau, ce qui veut donc dire que je dois contrôler le niveau d'eau et en ajouter si nécessaire.

J’envisage de mettre deux capteurs de niveaux d’eau, un situé à une limite dite haute et un second à une limite dite basse.

De ce fait, quand l’eau est en dessous du capteur de niveau bas l’électrovanne s’ouvre en injecte de l’eau jusqu’à ce que le capteur de niveau haut soit au contact de l’eau ce qui aura pour conséquence de fermer l'électrovanne.
Sachant que quand l'utilisateur va sur l'écran LCD, il puisse lire à quel niveau est l'eau.

Pour cela, j'ai à ma disposition 2 capteurs de niveaux (Composant : 101020018) dont je possède le programme qui ne fonctionne seulement pour 1 capteur :

#define WATER_SENSOR 2

void setup()
{
Serial.begin (9600);
pinMode(WATER_SENSOR, INPUT);
}
void loop()
{
Serial.println(digitalRead(WATER_SENSOR));
delay(500);
}

Mais je dispose aussi d'un relais (103020005) dont je possède aussi le programme mais je n'ai hélas pas pue le tester :

/ Relay Control void setup() { pinMode(2, INPUT); pinMode(3, INPUT); pinMode(4, OUTPUT); } void loop() { if (digitalRead(2)==HIGH) { digitalWrite(4, HIGH); delay(100); } if (digitalRead(3)==HIGH) { digitalWrite(4, LOW); } }

Et je possède aussi l'électrovanne (VMA422)
Pour finir, je possède bien évidement une Arduino Mega et un shiled pour celle-ci.

Comme vous l'aurez très certainement remarquer, j'ai poser le shiled sur l'arduino mega, puis j'ai brancher le câble I2C sur un port du shiled et sur le port du capteur de niveau.

Cependant je ne sais pas quoi faire avec tout ces composants, je ne sais pas si il faut modifier le programme du capteur pour pouvoir lire les 2 capteurs. Mais aussi, je ne sais pas comment tout câbler et je ne connais aucun programme qu'il faudrait pour ouvrir l'électrovanne et aussi si vous pourriez m'aider à afficher les valeurs du niveau d'eau sur un petit écran LCD.

Es que vous pourriez m'aidez au niveau du programme et au niveau du câblage ?
En attente d'une réponse de votre part et en vous remerciant d'avoir lu mon problème.