Petit site pour ceux qui bricolent en électronique en général et sur les PICAXES en particulier. Les PICAXES sont des microprocesseurs (PIC de Microship) programmables en BASIC. Pleins de qualités, pas chers, ultra faciles à programmer. Tout (ou presque) est sur le site du distributeur Gotronic (voir les liens). Les pages seront ajoutées ou modifiées petit à petit. Dans le but d'améliorer ce blog, communiquez moi vos remarques et les erreurs que vous pouvez constater. Pour me contacter: Envoyez un mail à l'adresse : mag1mic@free.fr . Tout message reçoit une réponse Pour retourner au menu, Cliquer sur "LISTE DES PAGES", ici ou en haut de la colonne de gauche Pour laisser un message, allez dans le "LIVRE D'OR" Bonne visite
Stop and Go
pour piste mini z
Le projet "Stop and Go" est la réponse proposée à une question de laurentby sur un forum d'électronique, voir ICI En résumé, il s'agit d'installer une barrière de pénalité sur une piste de voitures télécommandées mini z.
Le cahier des charges : Le Sart and Go est une sorte de sas constitué d'un portique avec cinq leds rouges, d'une barrière "Arrivée" et d'une barrière "Départ". A la mise sous tension, le programme entre dans une boucle d'attente. Pendant ce temps, plusieurs actions sont possibles:
le temps d'alarme est réglable par un potentiomètre, de 0 à 10 s
l'appui sur le poussoir permet de tester les barrières, si le tsop récepteur fonctionne et est éclairé par la led émettrice, la led correspondante du portique est éteinte. Si une barrière ne fonctionne pas, cette led est allumée (voir démo sur la vidéo maquette). En relâchant le poussoir, on lit en binaire sur les leds le temps de pénalité enregistré en mémoire. Ex: 1010 =8+2=10s.
On sort de cette boucle lorqu'une voiture coupe la barrière "arrivée", les cinq leds du portique s'allument. Après le dépassement complet de cette barrière, le décompte du temps de pénatité commence (réglable de 1 à 15 s). Les cinq dernières secondes éteignent les leds une à une.
Lorsque toutes les leds sont éteintes, la voiture peut franchir la barrière "départ" sans provoquer d'alarme. Dans le cas contraire, l'allumage des leds est figé et une alarme visuelle et sonore se déclenche (temps réglable de 0 à 10 s), ce temps peut être abrégé en appuyant sur le poussoir. Après l'alarme et le dégagement de la barrière "départ", le système est automatiquement recyclé. Le schéma:
La maquette: La très belle réalisation de laurentby: Le code: Un programme en basic se lit assez facilement, avec quelques mots d'anglais simples. Ce qui suit le caractère ";" est un commentaire. A la mise sous tension, le système entre dans une boucle d'attente. Un appui sur le poussoir pendant cette boucle envoie dans un sous programme de test barrière et réglage du temps de pénalité (regtempo). Sans appui pendant 3s, le programme retourne dans la boucle d'attente. Le franchissement complet de la barrière "arrivée" déclenche le comptage du temps de pénalité. Le franchissement de la barrière "départ" envoie le programme dans le sous programme d'interruption (interrupt), on teste la variable temps (time), si cette valeur est inférieure au temp de pénalité, une alarme est déclenchée.
;StopAndGo MM 20/03/2022 #picaxe 14M2 ;pour vérif syntaxe en ft spéfifications du 14M2 setfreq M16 ;Fréquence horloge à 16 MHz; réglage 38kHz plus précis symbol LedIR = C.0 ;sortie leds IR symbol recepA = pinC.1 ;valeur logique entrée TSOP arrivée symbol recepD = pinC.2 ;idem TSOP départ symbol pous=pinC.3 ;valeur entrée poussoir sur C.3 symbol alarm=B.5 ;sortie alarme symbol potar=C.4 ;réglage temps alarme symbol tempo=b1 ;temps pénalité symbol rest=b2 ;temps restant symbol Talarm=b3 ;valeur temps alarme symbol test=b4 ;pour visu test barrières dirsB=%11111 ;désignation broches B0 à B4 en sorties, pour fonctionnement de pinsB read 0,tempo ;lecture de la tempo mémorisée en EEPROM ;***** option 10s par défaut ******* If tempo=0 then ;Si la lecture EEPROM donne 0 (Ex. après programmation) tempo=10 ;tempo pénalité à 10s par défaut endif ;Pour enregistrer une mémo à 0 => 3 lignes à supprimer ;******************************* pwmout LedIR, 104,209 ;activation Emetteur IR PWM 38 kHz à 16 MHz; RC=50% pullup %100000000000 ;pullup sur C.3, R interne au +5V do ;boucle principale low alarm ;sortie alarm niveau bas do ;boucle attente barrière arivée if pous=0 then ;poussoir appuyé gosub regtempo ;sous prog réglages endif pinsB=0 ;toutes sorties B à 0 readadc potar,Talarm ;lecture tempo alarme Talarm= 10 * Talarm/240 ; calibrage de 0 à 10 s loop while recepA=0 ;boucle tant que tsop éclairé pinsB=%11111 ;allumage les 5 leds do loop while recepA=1 ;attente passage après barrière setint %100,%100 ;interruption sur C.2 (barr départ) niveau haut time=0 ;RAZ compteur de secondes (timer 1s) do ;boucle selectcase rest=tempo-time ;écart temporisation et temps attente select case rest ;selection en ft valeur de rest case 4 pinsB=%1111 ;4 leds allumées case=3 pinsB=%111 case=2 pinsB=%11 case=1 pinsB=%1 case=0 pinsB=%0 ;tout éteint exit ;case=0 => sortie de boucle end select loop loop ;fin boucle principale ;************************************* interrupt: ;interruption si barrière départ franchie if time<tempo then ;Oh lala, il a grillé le feu!!! time=0 do ;boucle alarme high alarm ;alarme ON pause 1000 ;=250ms à 16MHz low alarm ;alarme off pause 1000 loop while time<Talarm or pous=0 ;temps alarme low alarm do loop while pous=0 ;attente arret poussoir endif do loop while recepD=1 ;attente sortie barrière départ reset ;RAZ du programme (soluce facile RAZ piles sub/return) ;****************************************** regtempo: ;réglage temporisations tempo et temps larme do test=recepD*2+recepA ;test des barrières: led allumée=défaut pinsB=test ;visu test sur portique loop while pous=0 ;attente relachement pinsB=tempo ;visu tempo pénalité sur portique en binaite: %1010 = 8+2=10 do time=0 do if time>2 then ;sortie auto après 3 secondes sans appui write 0,tempo ;mémo temps pénatité en EEPROOM return ;retour boucle principale endif loop while pous=1 ;fin boucle attente sans appui do loop while pous=0 ;boucle attente relachement inc tempo ;comptage appuis poussoir if tempo>15 then ;bouclage sur 15s tempo=0 endif pinsB=tempo ;visualisation tempo sur leds loop