Pour le câblage, fil rouge sur le 5V, le noir sur le GND et enfin l'émetteur et le récepteur reliés sur la même entrée numérique.
Ci-joint le code que j'utilise :
int Led=13; // Déclaration de la Led sur la broche 13
int capteur=3; // Déclaration du capteur sur la broche 3
int val=0; // Déclaration d'un variable numérique
void setup()
{
Serial.begin(9600);
pinMode(Led,OUTPUT); //Déclaration de Led en tant que sortie
pinMode(capteur,INPUT); // Déclaration de capteur en tant qu'entrée
}
void loop()
{
val=digitalRead(3); // Lecture de l'état du capteur
if(val==HIGH)
{
digitalWrite(Led,HIGH); // Allume la led 13
}
else
{
digitalWrite(Led,LOW); // Eteint la led 13
}
Serial.println(val);
delay(300);
}
Cependant, lorsque je passe un objet entre les fourches, l'état du capteur ne change pas. Il change seulement lorsque je touche les câbles de l'émetteur/récepteur...
Serait-ce une erreur de câblage ? (mettre l'émetteur et récepteur sur la même entrée par exemple )
Faut-il utiliser une entrée analogique au lieu de numérique ?
Merci de la réponse rapide, cependant avec la pull_up l'état du capteur reste à 1, logiquement la LED ne s'allume pas et lorsque je passe un objet entre les fourches l'état devrait tomber à 0, mais ce n'est pas le cas...
EDIT : Vu la datasheet, j’aurai fait le contraire.
(Je suis c*n, j’en utilise au boulot et on checke la tension du récepteur sur le blanc.)
Après il faut des résistances pour fixer les courants selon l’application .
Tu l’utilise sur un module (shield) ou seul ?
Ya des chances d’avoir cramé la LED sans rien , mets une résistance d’une 100aine d’Ohm, tu la voies s’allumer (avec ton appareil photo de ton tel) ?
Si j'applique ce schéma électrique, à mon capteur le K et le E sont mes fils noir et vert. Ensuite le fil rouge (A) je le mets au 5V via une résistance de 270 ohms.
Par contre pour ce qui du C, le fil blanc, on ne peut pas le relier directement au D3 de l'arduino ? On doit obligatoirement passer par une autre résistance ?
Si je déclare ça comme une PULL_UP plus besoin de résistance non ?
J'ai fait le montage ci-dessus avec une BreadBoard (je n'arrive pas a ajouter la photo du montage). Je n'ai pas utilisé la led de l'arduino, mais une autre.
La led reste allumée, car la valeur de la broche 3 est à 1, alors qu'aucun objet ne coupe le faisceau du capteur.
Le code est identique à mon premier post. (j'ai juste branché la led sur le port 7 et plus la 13).
LED alimentée par l'arduino, câblée de la façon suivante : 5V--R---Led----Pin.
Je n'ai pas de Voltmètre, mais si la LED est allumée, c'est que j'ai 5V comme tu l'as dit.
C'est bizarre , vu ton montage de LED (qui est correct) , ta Led s'allume que si elle est commandée par digitalWrite(LOW). Comme tu copies l'état du récepteur de ton capteur à fourche, tu as donc un LOW à ce niveau là donc tu reçois bien de la lumière au niveau de la fourche ...
EDIT (j'avais pas vu c'est déja fait) fais un petit Serial.println(digitalRead(3)); (avec un Serial.begin(9600); dans le setup) et donnes nous la valeur retournée fourche vide et fourche obstruée (avec qqch dans la fourche) .
Tu as bien ta valeur "val" qui change en fonction de qqch qui passe ou non dans la fourche ?
Normalement 0 fourche vide , 1 fourche "pleine" .
Effectivement erreur de ma part.
J'ai testé l'infrarouge du capteur, je n'ai rien vu. Le capteur est mort. En tout cas merci à toi, je réessaierai avec un nouveau capteur.