Salut du Quebec
La commande on_for existe-t-elle en arduino. Je m'explique. J'ai un detecteur de mouvement avec un contact sec. Si pas de présence la led verte flash sans arret. si par contre un mouvement est detecté je veux faire clignoter la led rouge pendant 5 minutes meme si le contact du detecteur de mouvement est redevenue a off. La commande on_for en basic est la plus approprié.. mais en arduino, c'est le néant total. Des idées???
Voici mon code (adapté d'une recherche google) car un peu niais en prog arduino.....:
/* Led avec detecteur de mouvement
LA lecture du contact du detecteur de mouvement actionne les deux led
CONNECTIONS:
Contact sec du deteceur de mouvement +5 a borne 3
Résistance 10k de la borne 3 au ground
LED et resistances 220 ohm en serie avec les bornes 10 et 11 au ground
/-----( Déclaration des constantes et bornes )-----/ #define buttonPin 3 #define ledPin1 10 #define ledPin2 11
void setup() /****** SETUP: roule une fois ******/
{
pinMode (ledPin1,OUTPUT) ; // PIN 10 led rouge
pinMode (ledPin2, OUTPUT) ; // PIN 11 led verte
pinMode (buttonPin, INPUT) ; // PIN 3 est l'entrée du contact sec du detecteur de mouvement
}//--(end setup )---
void loop() /****** Boucle: LEd rouge ******/
{
if (digitalRead(buttonPin)==HIGH) // Si contact sec detecteur de mouvement a ''on''
{
digitalWrite(ledPin1, HIGH) ; // LED rouge on
delay(500); // attendre .5 seconde
digitalWrite(ledPin1, LOW); // led rouge off
delay(100); // attendre .1 secondes
}
else /****** Boucle: LEd verte ******/
{
digitalWrite(ledPin2, HIGH) ; // Si contact sec du detecteur de mouvement est a off
delay(10); // attendre .01 secondes
digitalWrite(ledPin2, LOW); // Led verte a off
delay(4000); // attendre 4 secondes
}
delay(50); // afin d'éviter l'hystérésis
}//--(fin du programme )---
Bonjour les copains,
Non, je ne crois pas que cette commande relative à Basic fasse partie du langage C. mais ton problème est relatif à un chronométrage, ce n’est pas très compliqué à résoudre, il y a une foule de façon de le traiter. Par exemple :
Tu déclares : int Chronometre = 0 ;
Dans ta boucle de base tu intègre une instruction du genre :
If (Chronometre > 0) {Faire clignoter la rouge} else {faire clignoter la verte}
Toujours dans la boucle de base : delay(100) ; Cette instruction te permet de faire clignoter dix fois par seconde.
If (Chronometre > 0) Chronometre-- ; Cette instruction sera chargée de décompter ta temporisation.
Quand ton détecteur de présence capte un mouvement il force la valeur de la temporisation dans le chronomètre avec une instruction du genre :
Chronometre = 3000. (3000 car il faut cinq minutes, soit 300 secondes et on décompte dix fois par seconde environ. Si tu veux de la précision du enlève à cette valeur le temps passé à réaliser les autres instructions de la boucle de base.
Ce n’est qu’un canevas, je n’ai pas testé sur mon arduino.
Merci beaucoup a tous pour vos réponses, je vais voir et vous reviens avec les résultats
Secundo, vraiment désolé de vous avoir induit en erreur avec l'info que on_for est une instruction basic. Je travaille en régulation informatisé avec Delta Controls (produit canadien) qui utilise un hybride fortran comme language. ( meme si Onfor n'est pas une instruction Fortran)
Par exemple pour éviter le cyclage d'un ensemble de compresseurs de réfrigération d'une aréna Onfor est tres utile:
If A_D_COMP1 OnFor 1M Then
A_D_COMP4 = Switch ( A_D_COMP4, CO_TEMP_RET_SAUM, 85, 75)
End If
Finalement, je vous soumet un lien d'un manuel Fortran de IBM de 1956... Ben drôle que 58 ans plus tard on utilise encore ça...
quebeclibre:
Merci beaucoup a tous pour vos réponses, je vais voir et vous reviens avec les résultats
Secundo, vraiment désolé de vous avoir induit en erreur avec l'info que on_for est une instruction basic. Je travaille en régulation informatisé avec Delta Controls (produit canadien) qui utilise un hybride fortran comme language. ( meme si Onfor n'est pas une instruction Fortran)
Par exemple pour éviter le cyclage d'un ensemble de compresseurs de réfrigération d'une aréna Onfor est tres utile:
If A_D_COMP1 OnFor 1M Then
A_D_COMP4 = Switch ( A_D_COMP4, CO_TEMP_RET_SAUM, 85, 75)
End If
Finalement, je vous soumet un lien d'un manuel Fortran de IBM de 1956... Ben drôle que 58 ans plus tard on utilise encore ça...
bonjour
en fait si tu veux t'approcher "au mieux" de cette methode , il te faut gerer 2 compteurs par contact (ou un plus etat)
dans la boucle , lire l'etat du contact et si l'etat n'a pas changé incrementer la durée de cet etat.
Fortran , c'est avec ça que j'ai debuté la prog scientifique sur du DEC , il y a déjà ... longtemps , je ne sais meme plus si je saurais encore coder simplement, mais bon je suppose que c'est comme le velo = suffit de remonter dessus pour rouler
Artouste:
Fortran , c'est avec ça que j'ai debuté la prog scientifique sur du DEC , il y a déjà ... longtemps , je ne sais meme plus si je saurais encore coder simplement, mais bon je suppose que c'est comme le velo = suffit de remonter dessus pour rouler
Moi c'était un NORSDATANORKSDATA NORSKDATA
Bien vu Artouste
Je vais me couché
Artouste:
Fortran , c'est avec ça que j'ai debuté la prog scientifique sur du DEC , il y a déjà ... longtemps , je ne sais meme plus si je saurais encore coder simplement, mais bon je suppose que c'est comme le velo = suffit de remonter dessus pour rouler
Moi c'était un NORSDATA
bonjour icare
dans ton cas , manquerais pas un K ?
Artouste:
Fortran , c'est avec ça que j'ai debuté la prog scientifique sur du DEC , il y a déjà ... longtemps , je ne sais meme plus si je saurais encore coder simplement, mais bon je suppose que c'est comme le velo = suffit de remonter dessus pour rouler
Moi c'était un NORSDATA NORKSDATA
Bien vu Artouste
Tiens, ne pourrait-on pas utiliser FORTRAN avec avr-gcc ? Je pense que c'est techniquement réalisable, à condition de faire un mix C/FORTRAN ou de réécrire wiring (et les libs Arduino) en FORTRAN
Re salut
Et bien en ce qui me concerne le Fortran est très simple a maitriser. goto, not , and ,or.... etc... Je tente, tant bien que mal, a comprendre le language Arduino malgré quelques commandes semblables comme If, else.... malgré que j'ai pas remarqué, en Arduino, l'instruction ''then'' qui normalement, suit ''if'' en Fortran
J'ai pas réussi a faire flasher mes Led comme le suggérait B@tto... Une niaiserie c'est certain, mais faut travailler pour réussir , pas du genre a vouloir tout cuit dans le bec...
Le "langage Arduino" est simplement du C++ : passer du FORTRAN au C/C++ devrait être assez simple, il y a énormémént de tutos disponibles, par exemple sur "openclassrooms".
bonjour
Le plus "difficile" est de s'abstraire des automatismes de redaction issues d'un autre langage souvent pratiqué depuis longtemps.
Mais les reflexes nouveaux automatismes viennent eux aussi, vite.
Quand tu en est au debut à 50 compils foireuses parce que tu a oublié cette sal&%µr#e de point-virgule* à la fin, tu t'adapte vite