Blogotux

Trucs, astuces pour linux mais c'est d'abord mon bloc-notes, donc sans grandes prétentions

Mes liens avec Shaarli

mesurer la tension d'alimentation d'une carte arduino

12/03/2016 à 20:43:12 - Aucun commentaire

sans composants extérieurs

bien sûr, c'est intéressant uniquement pour une carte maison qui n'a pas de régulateur intégré

float mesure_vcc() {
ADMUX = 0x4E; // Sélectionne la référence interne à 1v1 comme point de mesure,
// avec comme limite haute VCC
ADCSRA |= (1 << ADEN); // Active le convertisseur analogique -> numérique
ADCSRA |= (1 << ADSC); // Lance une conversion analogique -> numérique
while (ADCSRA & (1 << ADSC)); // Attend la fin de la conversion
int valeur = ADCL | (ADCH << 8); // Récupère le résultat de la conversion
//Serial.print("valeur:");
//Serial.println(valeur);
/*
* VCC = 5v = 1023
* 1v1 interne (à VCC = 5v) = (1023 * 1.1) / 5 = 225
* En mesurant le 1v1 interne on peut donc déduire le VCC réel du circuit
* VCC = (1023 * 1.1) / 1v1_mesure
*/
float real_vcc = (1023 * 1.1) / valeur;
Serial.print("tension: ");
Serial.println(real_vcc);
return real_vcc;

Dans les catégories : arduino

script arduino 2

05/10/2014 à 12:24:52 - Aucun commentaire

tant que l'on appuie sur un bouton, un chronomètre est lancé. un second appui bref, fait clignoter la led, autant de fois que de secondes du chrono

const int bouton=3;
const int led=13;
int depart,fin,tempo;
boolean debutcycle;

void setup(){
pinMode(bouton,INPUT_PULLUP);
digitalWrite(bouton,HIGH);
pinMode(led,OUTPUT);
digitalWrite(led,LOW);
debutcycle=LOW;
Serial.begin(9600);
}

void loop(){
boolean etat=digitalRead(bouton);
if (etat==LOW){ //si pas de cycle de comptage en cours, on le démarre
debutcycle=HIGH;
tempo=0;
cycle();//lance le chrono contentu dans cycle()
}
//etat=digitalRead(bouton);
if(debutcycle==HIGH){ //si un cycle est en cours, on va flasher la led en appelant fincycle()
Serial.println(tempo);
fincycle();

}
}


void cycle(){ // démarre le chrono pendant lequel on appuie sur le bouton la 1° fois
boolean etat=digitalRead(bouton);
int depart=millis();
while (etat==LOW){
delay(10);
fin=millis();
etat=digitalRead(bouton);
}
tempo=fin-depart;
}

void fincycle(){
boolean etat=HIGH;
while (etat==HIGH){ //le second appui lance un nombre de clignotements égal à la durée en secondes
etat=digitalRead(bouton);
delay(50);
//Serial.print(etat2);
}
int eclats=tempo/1000;
Serial.println(eclats);
for( int i=0;i digitalWrite(led,HIGH);
delay(600);
digitalWrite(led,LOW);
delay(100);
}
debutcycle=LOW; //le cycle est terminé
}

Dans les catégories : arduino

script arduino

04/10/2014 à 17:21:50 - Aucun commentaire

aide mémoire

modele fonction
lit un bouton et allume une led au travers d'une fonction allumage(), qui retourne 0/1 si le bouton est appuyé

const int bouton=3;
const int led=13;
boolean truc;

void setup(){
pinMode(bouton,INPUT_PULLUP);
digitalWrite(bouton,HIGH);
pinMode(led,OUTPUT);
digitalWrite(led,LOW);
}

void loop(){
if (allumage()){ // si bouton appuyé, on allume
digitalWrite(led,HIGH);
delay (1500);//pendant 1.5s
digitalWrite(led,LOW);
}
}

boolean allumage(){ //retourne low high selon l'état du bouton
boolean etat=digitalRead(bouton);
if (etat==LOW){
truc=HIGH;
}
else {
truc=LOW;
}
return truc;
}

Dans les catégories : arduino