Salut à tous.
Mon C se rouillant avec les années sans en pratiquer, je me suis donc commander un petit kit avec un arduino MEGA 2560.
Pour commancer je veux m'amuser avec la led sur la carte pour me refaire une santé en C.... et là bin je bloque déjà sur l'utilisation des "if".
Le montage:
un signal carré généré par un NE555 arrive sur la pin12. Le led est sur la pin13. Faire une simple copie sortie=entrée s'est bien passé (ouais bon juste une ligne de code ça va).
Maintenant je veux jouer avec la période du signal d'entrée:
- utiliser une variable et l'incrémenter sur chaque front montant par exemple:
si pin12 = front montant, alors toto++.
si toto=2, alors on inverse l'état de la diode puis toto=0. ainsi de suite.
Déjà là, c'est plus simple en VHDL, la fonction pour lire sur front montant ça se fait bien, mais en C, comment on fait?
2)Mon programme à l'état actuel, pouvez me dire ce qui cloche:
Pour reprndre l'idée ci-dessus, je fais un compteur avec une variable, puis je vais lire le n bit suivant la fréquence voulu. Et ça impossible à faire. M'emmêle avec les if. Je n'ai pas trouvé sur le net si on peut faire ce genre de chose en C: toto[3] pour lire le 3eme bit de toto. Visiblement non.
Mais ceci marche comment exactement: toto<<3 ? Ca fait un décalage de 3bits. Si oui je ne voudrais pas ce genre de chose (ou alors à faire via une autre variable). Je veux lire le n bit mais sans toucher à la variable.
int input12, titi=0, out=0;
unsigned short int toto = 0x0000;
// initialisation
void setup()
{ //input pins
pinMode(12, INPUT);
// output pins
pinMode(13, OUTPUT);
}
// no ended loop
void loop()
{
//the pin 12 is connected to an output of a NE555, period= 1s
// with a duty cycle of about 50%
input12 = digitalRead(12);
if (input12=='1'&& titi=='0'){
toto++;
titi='1';
}
if (input12=='0'&& titi=='1'){
titi='0';
}
if(toto==0x0002){
out++;
}
if(toto>0x0002){
toto=0x0000;
out=0;
}
digitalWrite(13,out);
}
Merci et désolé si je ne suis pas clair.