Peut on allumer une led1 avec une temporisation de ex 2min
Et que en même temps que le la led1 et allumer,a environ 1 minute plus tard une 2 emme led s’allume avec bien sur un temporisation exemple de 3minute? pendant que la led1 et encore allumer et fini sont cycle de 2min..
Après une semaine de recherche sur le net j ai trouvé aucun exemple incroyable
Peut être mal fait ma recherche
Merci d’avance pour le coup de pouce….
- Edité par androstorm 14 décembre 2013 à 23:49:38
Il fut un temps, ou un homme, un seul, partit a la recherche de cette eledorados qu'est le multi-tâche sur... (oups désolé)
DuinOS, est, surement peut-etre, ton ami, si il est encore à jour...
Ho chef, une mouche ! Humm... Qu'avons nous comme arme ? Heu... Le rayon de la mort de Tesla, la bombe nucléaire d'Einstein et la tapette de mami. Trés bien ! Prennons le rayon de la mort !
Si c'est possible, si on arrive à comprendre ce que tu veux exactement faire...
Moi ce que je comprend c'est que tu veux allumer deux LEDs, ca c'est possible, et tu veux les allumer à des moments différents, ce qui est possible aussi...
D'ailleurs, le multitache en tant que tel n'existe pas réellement (sauf si tu as plusieurs processeurs). Tout est question de timing et d'ordonnancement.
1. Oui ton projet est possible via des timers. Avec deux timers seulement sur l'Arduino faut bien réfléchir à l'algorithme mais avec 2 leds c'est normalement faisable.
2. Il n'y a pas forcément d'example pour tous tes projets, faut bien coder un truc nouveau un jour ou l'autre. Sachant que tu sais ce que tu veux faire, give it a try.
3. Le multitâche est tout à fait possible si on parle bien du même multitâche : plusieurs tâches qui sont plus ou moins exécutées à la suite mais dans l'ensemble ca fait comme si plusieurs tournaient en même temps (comme sur un OS style Windows). Faut juste coder le framework, bon sur une Arduino Uno ca risque de prendre pas mal de place donc c'est peut-être inutile.
merci zeqL ça a l aire bien compliqué pour le novice que je suis,j ai toujours trouver des projects ou les leds qui clignottes mais jamais un projet avec 2 temporisations différentes pour chaque leds et qui sont indépendant l 'une de l'autre..
merci eskimon ,je vais essayer de donner un exemple un peut plus concret..
-------------------------
Détecteur ultrason dans un couloir a plusieurs entrées A et B Il faudrait pouvoir allumer grâce au détecteur ultrason si passage entrée A alors allume led A pendant un certain temps ex 4 minutes
si passage entrée B alors allume led B pendant un certain temps ex 6minutes
jusqu’ la facile….
Ici que ça ce corse
Mais si après une minute il y du passage aussi a l’entrée B la led B pendant 6 minutes doit s allumer même si la led A n as pas terminer sont cyle des 4minutes..
Et vis versa
J espère que je me suis fait mieux comprendre encore desolé..
Comment dire, quand ont et novice comme moi,ca fait du bien de pouvoir essayer de résoudre un problème avec un bout de code adapter épurer de tout chose inutile...
Se mettre a la place de la personne qui a une problème c est plutôt balèze
Alors merci encore Eskimon pour le temps que tu as passé
J ai modifié pour que ca fonctionne avec des 2 pousoirs car pas encore reçu le détecteur ultrason
//////////////////déclaration des variables///////////////////////////////////
#define TON_A 10000 // 10 SECONDE
#define TON_B 5000 // 5 SECONDE
int US_AX = 8;//pousoir A ,PIN 8
int US_A;
int US_BX = 9;//pousoir B ,PIN 9
int US_B;
//broches de sorties des leds
const int led_A = 2;
const int led_B = 3;
//garde une trace du temps
long temps_A, temps_B;
//garde une trace de l'état des leds
char etat_A = LOW;
char etat_B = LOW;
////////////////initialisation et configuration des entrées/sorties ///////////
void setup()
{
pinMode(US_A,INPUT);//ENTREE POUSSOIR A
pinMode(US_B,INPUT);//ENTREE POUSSOIR B
pinMode(led_A,OUTPUT);//SORTIE LED A
pinMode(led_B,OUTPUT);//SORTIE LED B
}
//////////////////////////////////execution en boucle///////////////////////////
void loop() {
// Vérifie les poussoirs pour savoir s'il faut allumer les leds
US_A = digitalRead(US_AX);//US_A = US_AX lire la valeur du port PIN 8
if(US_A) {
temps_A = millis();
etat_A = HIGH;
digitalWrite(led_A, HIGH);
}
US_B = digitalRead(US_BX);////US_B = US_BX lire la valeur du port PIN 9
if(US_B) {
temps_B = millis();
etat_B = HIGH;
digitalWrite(led_B, HIGH);
}
// On regarde s'il faut éteindre les leds ou pas
if(etat_A == HIGH && ((millis() - temps_A) > TON_A))
{
etat_A = LOW;
digitalWrite(led_A, LOW);
}
if(etat_B == HIGH && ((millis() - temps_B) > TON_B))
{
etat_B = LOW;
digitalWrite(led_B, LOW);
}
}
Merci bonne fin de week andro
- Edité par androstorm 15 décembre 2013 à 18:39:35
Par contre comme on l'a souvent dit sur d'autres sujets, faire gaffe avec millis(). ca va fonctionner pendant 50 jours puis après ca risque de buguer (prévoir un reset software par exemple ?). Mais bon, pour du "proof of concept" on va dire que ca suffit
Avant de poster un message, vérifiez la date du sujet dans lequel vous comptiez intervenir.
Si le dernier message sur le sujet date de plus de deux mois, mieux vaut ne pas répondre. En effet, le déterrage d'un sujet nuit au bon fonctionnement du forum, et l'informatique pouvant grandement changer en quelques mois il n'est donc que rarement pertinent de déterrer un vieux sujet.
Au lieu de déterrer un sujet il est préférable :
soit de contacter directement le membre voulu par messagerie privée en cliquant sur son pseudonyme pour accéder à sa page profil, puis sur le lien "Ecrire un message"
soit de créer un nouveau sujet décrivant votre propre contexte
ne pas répondre à un déterrage et le signaler à la modération
Retrouvez moi sur mon blog et ma chaine Youtube !
Retrouvez moi sur mon blog et ma chaine Youtube !
Retrouvez moi sur mon blog et ma chaine Youtube !
Retrouvez moi sur mon blog et ma chaine Youtube !