Electronique aide Arduino
pinMode(XXX,INPUT_PULLUP); plus besoin de mettre une résistance en entrer du BP puis de l’Arduino
digitalRead(XXX); lit la valeur digital de la pin
Serial.write(XXX); affiche le code ascii
millis() fonction qui compte le temps en ms peut être utiliser pour faire qqch pendant X temps
analogRead(XXX); lit une valeur analogique sur une de pin Ax
map(variable,valeur analogique min , valeur analogique max ,new min,new max);
la fct map permet de faire une conversion par exemple :
intensiterX=map(valX,512,1023,0,255);
on va dire que Valx varie entre 512 et 1023 grâce au map cette valeur va varier en 0 et 255.
analogWrite(X,intensiterX); ecrit une valeur en PWM sur les pin PWM de l’Arduino intensiterX varie entre 0 et 255.
tone (nomDuBuzzer,freqBuzzer) ; utiliser pour faire fonctionner un buzzer
noTone(nomDuBuzzer); éteint le buzzer
ParseInt() ; récupère des entiers dans une une chaise de caractère écrite dans le moniteur série
Serial.available() > 0 . buffer pas vide
On lit que s’il y a un caractère
Serial.read() ;réception d’un caractère
Serial.readStringUntil() ; pour la réception d’un string, pas oublie de mettre \n
serialEvent () ; fct appeler quand un évènement apparait dans le moniteur serial
lcd.print() ; imprime un message sur le lcd
lcd.begin (16,2) ; taille de l’écran a mettre dans le setup
lcd.setCursor(x,y) ; position du curseur avec X les ligne et Y les colonnes
lcd.home() ; position le curseur a la position de base
lcd.clear() ; efface le lcd
lcd.display() ; affiche le texte
lcd.noDisplay() ; cache le texte
lcd.blink() ; fait clignoter le curseur
lcd.scrollDisplayLeft () ; fait allez le texte sur la gauche
lcd.scrollDisplayRight();; fait allez le texte sur la droite
Front descendant
Besoin de 1 mémoire en plus pour mémoriser l’état
char etatBP1Mem=1; on l’initialise a 1 comme comme ça on sais comparer ensuite on lit l’etat
etatBP1=digitalRead(BP1);
if ((etatBP1==LOW)&&(etatBP1Mem==1)) on teste avec un if avec 2 conditions si le bp est bien presser et si la mémoire est a 1
{
Instruction a faire ;
}
etatBP1Mem=etatBP1; on mémorise l’état du BP pour le comparer au prochain cycle
Fonction millis() pour faire un delay
unsigned long CurrentTime=0;
unsigned long previousTime=0;
unsigned long DeltaTime=0;
const int tempo=1500; ici un delay de 1500 ms soit 1,5 sec
void setup()
{
}
void loop()
{
CurrentTime=millis(); on compte le temps d’où current time
DeltaTime=CurrentTime-time; on fait un delta de temps
if (DeltaTime>tempo) on teste si le temps est écouler si oui on rentre dans le if
{
previousTime=CurrentTime; on met à jour previous time pour recommencer a compter
//instruction a faire
}
Interrupt
LOW pin état bas
FALLING front descendant
RISING front montant
CHANGE la pin change de valeur
void setup()
{
attachInterrupt(0,nomFonction,LOW); 0 ou 1 pour les pin utiliser , LOW la pin état bas
}
void loop()
{
On appelle pas la fonction dans le loop
}
void Interrupt()
{
// instruction a faire
}
Utilisation capteur VMA 320
On doit utiliser la fonction suivante pour obtenir la température
double Thermistor(int Val_ADC)
{
double Temp;
//Temp = log(10000.0*((1024.0/Val_ADC-1))); // for pull-down configuration
Temp = log(10000.0/(1024.0/Val_ADC-1)); // for pull-up configuration
Temp = 1 / (0.001129148 + (0.000234125 + (0.0000000876741 * Temp * Temp ))* Temp );// Conversion
Temp = Temp - 273.15; // Convert Kelvin to Celcius
//Temp = (Temp * 9.0)/ 5.0 + 32.0; // Convert Celcius to Fahrenheit
return Temp;
}
Il faut lui donner int Val_ADC est la valeur analogique lue de la pin ou est câblé le capteur
void setup()
{
valThermistor=analogRead(thermistor);
temp=Thermistor(valThermistor) ;
// autre instruction a faire avec la température ex : un hystérésis.
erreur=consigne-temp;
if(erreur<-1)
{
}
if(erreur>1)
{
}
}
Comparé deux chaines de caractère
if (chaine1 == chaine2)
{
}
Ou si on veut comparer avec une constante
if (chaine1 == "laConstante")
{
}
Utiliser capteur DHT 11
Pas oublier de faire ceci au début : pinMode(dataPin, OUTPUT);
int readDHT11() {
uint8_t recvBuffer[5];
uint8_t cnt = 7;
uint8_t idx = 0;
for(int i = 0; i < 5; i++) recvBuffer[i] = 0;
// Start communications with LOW pulse
digitalWrite(dataPin, LOW);
delay(18);
digitalWrite(dataPin, HIGH);
delayMicroseconds(40);
pinMode(dataPin, INPUT);
pulseIn(dataPin, HIGH);
// Read data packet
unsigned int timeout = 10000; // loop iterations
for (int i=0; i<40; i++)
{
timeout = 10000;
while(digitalRead(dataPin) == LOW) {
if (timeout == 0) return -1;
timeout--;
}
unsigned long t = micros(); // <6>
timeout = 10000;
while(digitalRead(dataPin) == HIGH) {
if (timeout == 0) return -1;
timeout--;
}
if ((micros() - t) > 40) recvBuffer[idx] |= (1 << cnt);
if (cnt == 0) // next byte?
{
cnt = 7; // restart at MSB
idx++; // next byte!
}
else cnt--;
}
humidity = recvBuffer[0]; // %
temperature = recvBuffer[2]; // C
uint8_t sum = recvBuffer[0] + recvBuffer[2];
if(recvBuffer[4] != sum) return -2;
return 0;
}
SerialEvent()
Const char led=4 ;
Void setupt()
{
pinMode(led,OUTPUT)
{
Void loop()
{
digitalWrite(led,LOW) ;
}
void serialEvent () quand il y a eu un évènement, on allume une led pendant 500 ms
{
digitalWrite(led,HIGH) ;
delay(500) ;
}
Est ce que quel qu'un peut me dire si c'est fonction / explication sont correctes ?
Bien a vous,