Bonjour,
je suis débutant en arduino et j'ai fait un système avec un laser, une photorésistance, un composant 74hc595, un affichage 7 segments et une del. J'aimerais lorsque que l'on passe entre le laser et la photorésistance la del s'allume, le buzzer buzz et le compteur passe à 1 puis ensuite 2....à chaque fois que l'on passe devant.
J'ai commencé à écrire le programme, le système marche, la del s'allume, le buzzer bip.... saut l'afficheur 7 segments qui ne marque rien. Auriez-vous une idée de mon erreur ? ci joint mon code
J'ai relié mon afficheur à l'arduino comme dans le kit démarrage arduino, j'ai essayer avec le code qui va avec ( qui fait un décompte 9-8-7-6...jusqu'à 0 et recommence) et ça marche. Le problème viens donc bien de mon programme.
Bonne après-midi
Paulo
byte seven_seg_digits[10] = { B11111100, // = 0
B01100000, // = 1
B11011010, // = 2
B11110010, // = 3
B01100110, // = 4
B10110110, // = 5
B10111110, // = 6
B11100000, // = 7
B11111110, // = 8
B11110110 // = 9
};
// connect to the ST_CP of 74HC595 (pin 12,latch pin)
int latchPin = 8;
// connect to the SH_CP of 74HC595 (pin 11, clock pin)
int clockPin = 12;
// connect to the DS of 74HC595 (pin 14)
int dataPin = 11;
int sensorPin=A0;
int sensor1Pin=A1;
int sensorValue=0;
int piezoPin=13;
int unit = 0;
int mes = 0;
int capt = 9;
int etat = 0;
int raz();
void setup(){
pinMode(sensorPin,INPUT);
pinMode(sensor1Pin,INPUT);
pinMode(24,OUTPUT);
pinMode(22,OUTPUT);
pinMode(piezoPin,OUTPUT);
digitalWrite(24,HIGH);
digitalWrite(22,LOW);
// Set latchPin, clockPin, dataPin as output
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(dataPin, OUTPUT);
}
// display a number on the digital segment display
void sevenSegWrite(byte digit) {
// set the latchPin to low potential, before sending data
digitalWrite(latchPin, LOW);
// the original data (bit pattern)
shiftOut(dataPin, clockPin, LSBFIRST, seven_seg_digits[digit]);
// set the latchPin to high potential, after sending data
digitalWrite(latchPin, HIGH);
}
void aff() {
switch (unit) {
case 0 :
{ B11111100; // = 0
}
break;
case 1 :
{ B01100000; // = 1
}
break;
case 2 :
{ B11011010; // = 2
}
break;
case 3 :
{ B11110010; // = 3
}
break;
case 4 :
{B01100110; // = 4
}
break;
case 5 :
{B10110110; // = 5
}
break;
case 6 :
{B10111110; // = 6
}
break;
case 7 :
{B11100000; // = 7
}
break;
case 8 :
{B11111110; // = 8
}
break;
case 9 :
{B11110110; // = 9
}
break;
default:
raz(); // En cas de problème on force tout à 0
}
}
void loop()
{ sensorValue=analogRead(sensorPin);
sensorValue=analogRead(sensor1Pin);
if(sensorValue<=1000)
{
{unit++; // On rajoute +1 au nombre de passage unit++ == unit=unit+1
}
digitalWrite(piezoPin,HIGH);
{tone(9,3047,400); noTone(8);
} digitalWrite(24,HIGH);
} else {
{unit = 0;}
digitalWrite(piezoPin,LOW);
digitalWrite(24,LOW);
} sensorValue=1000;
}
laser_alarme___compteur.ino (2.51 KB)
