Première modif pour tenir compte des sorties PWM et d'un éventuel LCD
MM
-----
Première modif pour tenir compte des sorties PWM et d'un éventuel LCD
MM
Si il y a des erreurs ci dessus, c'est que je n'ai pas eu le temps de les corriger...
Bonjour
même solution avec arduino NANO
Un peu de courant dans les entrées, on ne connait pas la longueur des fils.
3 boutons test pour réglage des durées.
Une seule sortie commune, on peut aussi séparer flash et Leds en 2 sorties
Cordialement
Plutôt que ces codes visuels, pourquoi pas une liaison radio, avec visualisation de l'état des contacts à distance? Mais quelle distance ?Je souhaiterais réaliser un contrôleur d’éclairage, en guise d’alarme lumineuse, d’un bâtiment à usage de dépendance. Je m’explique:
Sur l’idée, il s’agirait de faire clignoter ou varier l’éclairage d’une ou plusieurs ampoules (au total 3A en 12v), que je pourrai voir depuis chez moi, indiquant donc un code lumineux selon qu’un contacteur (en l’occurrence plusieurs) soient déclenchés ou non
http://electromag1.wifeo.com/les-pic...iaisons-hf.php
http://electromag1.wifeo.com/hf-wl101102.php
MM
Si il y a des erreurs ci dessus, c'est que je n'ai pas eu le temps de les corriger...
picaxe c'est une solution propriétaire (boite noire)
arduino c'est open-source
faites votre choix.
Tout projet flou conduit à une connerie précise !
Bonjour et merci pour la pertinence de vos contributions. Connaissant la qualité de ce forum et des intervenants, je m’attendais à de bonnes infos, mais pas à tant ni aussi vite, merci à tous !
Pour répondre à Forehouse, j’ai trouvé un sujet «*picaxe ou Arduino*?» sur ce même forum. Vu que mag1 dit que picaxe gère les commandes dont j’ai besoin, je pense que sa simplicité et son faible coût vont me décider. Quitte à me faire la main avec, avant de remplacer éventuellement par Arduino si besoin
Il y a un club de programmation électronique pas loin d’où je suis, ça va être idéal, étant néophyte en la matière
J’abandonne donc l’idée de départ avec divers circuits électroniques
Dernière modification par mag1 ; 30/12/2024 à 00h06.
Si il y a des erreurs ci dessus, c'est que je n'ai pas eu le temps de les corriger...
Bonjour,
Un club de programmation connaitra mieux l'arduino que le picaxe.
Voici une dernière mouture du schéma picaxe:
Sans l'option LCD, un 14M2 serait suffisant, mais la différence de prix est minime.
La conso serait de qques mA, que l'on peut réduire en incluant des phases de veille.
Avec ce schéma (si il est juste), pouvez vous en phrases simples décrire ce que font les sorties en fonction de la position des inters?
Le programme en découle automatiquement, pour le picaxe comme pour l'arduino.
MM
Si il y a des erreurs ci dessus, c'est que je n'ai pas eu le temps de les corriger...
En copiant sur Pascal071, j'obtiens ce schéma avec 14M2
MM
Si il y a des erreurs ci dessus, c'est que je n'ai pas eu le temps de les corriger...
Bonjour
Mag1:
avec arduino, je viens d'essayer de faire battre le pwm de façon cyclique, vitesse réglable:
c'est pas évident car, avec une incrémentation/décrémentation et tempo fixes, le résultat n'est pas terrible.
Le résultat visuel est meilleur lorsque la tempo est plus grande à pwm faible
exemple pour pwm 0 à 255:
tempo 5mS visuellement trop faible de 0 à 50, mais trop long de 100 à 255
J'ai eu du mal à faire la tempo inversement proportionnelle au pwm
si tu as une idée version Picaxe...
avec ce code le rendu est acceptable:
cordialementCode:void loop() { pot = analogRead (A0); // lecture potentiometre 0 a 1023 incSpeed = map(pot,0,1023,10,1); // incSpeed= 10 (rapide) a 1 (lent) suivant potentiometre 0 a 1023 //increment PWM suivant valeur incSpeed (1 a 10) for ( pwmValue = 0; pwmValue <= 255; pwmValue += incSpeed) { analogWrite(ledPin, pwmValue); tempo = 255/pwmValue; //tempo fonction du pwm if (tempo<=2) { //eviter tempo a 0 tempo=2; } delay(tempo); } // decrement PWM suivant valeur incSpeed (1 a 10) for ( pwmValue = 255 ; pwmValue >= 0; pwmValue -= incSpeed) { analogWrite(ledPin, pwmValue); tempo = 255/pwmValue; //tempo fonction du pwm if (tempo<=2) { //eviter tempo a 0 tempo=2; } delay(tempo); } }
Dernière modification par Pascal071 ; 30/12/2024 à 17h07.
Bonsoir,
Le club travaille avec Arduino, je partais du principe que c’était pour me familiariser avec la programmation. Mais au fur et à mesure des renseignements acquis, j’en déduis que je pourrai peut-être déjà commencer à m’y mettre sans attendre d’assister aux cours.
Merci pour le schéma, je serai pour l’option afficheur avec veille auto
Voici (dans l’idéal), les ordres de commandes de chacun des 3 circuits:
Circuit 1, éclats lumineux temporisé:
il faudrait pouvoir sélectionner le nombre d’éclats, de 1à5 à la suite. Ensuite, la tempo entre la série d’éclats, intervals minimum de 3 ou 5s, au delà, réglage / 5s jusque 30s, puis /10s jusque 60s
(soit 3/5/10/15/20/25/30/40/50/60)
Pas de variation d’intensité lumineuse sur ce circuit
Circuit 2: clignotement type feu de détresse, sans variations d’intensité. Aucun réglage
Circuit 3: modulation avec ou sans flash, (type phare maritime)
Il faudrait pouvoir choisir entre modulation seule, et modulation avec un éclat (éventuellement possibilité de 1 à 3) en pic. Pouvoir ensuite sélectionner la vitesse de modulation de minimum 3s jusque 20s (3/5/10,15,20)
Est-ce que picaxe gérerai tout ça ? Merci
Jérémie
Je ne peux rien tester actuellement (aucun matériel).
Le PWM est très simple à utiliser sur picaxe, il y a un utilitaire qui calcul tout et le principe est simple.
Ex : pour ceux qui ne connaissent pas...
pwmout active la sortie PWM en tâche de fond. Le 1er paramètre défini la fréquence. Ici 255 à 4Mhz donne 3900Hz
Le 2ème paramètre fixe le rapport cyclique 0=>0% et paramètre fréquence x 4 => 100% . Ici 255 x 4 =1023
Le 255 est choisi pour çà.
pwmduty modifie uniquement le rap cyclique donc : 0 => 0% ;1023 => 100%
Après, au lieu du potar, on fait varier w13 (variable 16bits) avec ce que l'on veut :boucle for/next, etcCode:pwmout B.2,255,0 ; freq=3900 Hz, RC=0% do readadc10 B.1,w13 ;lecture potar varie de 0 à 1023 pwmduty B.2,w13 ;PWM varie de 0 à 100% loop
Si tu es équipé picaxe. 14M2, (ou autre ..)
MM
Si il y a des erreurs ci dessus, c'est que je n'ai pas eu le temps de les corriger...
Chiche qu'on essaye
L'arduino, c'est en C ou C++, le picaxe c'est du basic,
Questions:
Peut on faire varier le nombre d'éclats (1 à 5) et la temporisation de 3 à 60s de façon continue par potars?
La modulation, c'est une variation d'éclairement de 0 à 100 % d'un panneau de leds par ex ?
L'éclat est donné par quoi ? éclair bref pleine puissance du panneau ou autre?
Et si on active deux circuits en même temps? on fait quoi? Matériellement possible ou pas ? c'est 3 inters ou un sélecteur?
MM
Si il y a des erreurs ci dessus, c'est que je n'ai pas eu le temps de les corriger...
Étant donné l’afficheur, ça ne serait pas gênant de se servir de potars pour sélectionner une donnée nombre et une donnée tempo.Ce serait moins pratique si c’était par ajustement linéaire de 0 à la fin, sans les seuils définis précédemment, mais ce ne serait pas non plus insurmontable. Surtout si l’afficheur indique l’information de réglage
La modulation, idéalement de 10 à 100%. Ensuite, est-ce qu’on envoie une petite surtension sur l'ampoule (au niveau 100) en guise d’éclat ou sur un second circuit d’éclairage ? C’est à définir, en fonction des contraintes de réalisation et longévité des ampoules
Pas de risque de croiser les circuits d’alimentation, partons du principe d’un commutateur mécanique inverseur à 3 positions.
bonsoir
sacré nombre de paramètres et d'options... avec affichage...
pas mal de lignes de code.
bon courage Mag1
cdlt
Dernière modification par Pascal071 ; 30/12/2024 à 20h43.
Bonjour,
Je n'aime pas le gaspillage, j'ai fait un schéma avec un 14M2
Mais on revient facilement au 20M2, les variables sont nommées, faut juste adapter les broches.
Ce schéma répond t il à toutes les options?
Il y a une sortie panneau et une sortie flash, mais on pourrait faire flasher la panneau à la luminosité max du cycle.
Le code avance, actuellement, la commande "modulation 3" agit comme suit:
montée PWM de 20 à 100% en un temps de 3 à 20s, flash ou pas, puis descente de 100 à 20% dans le même temps. OK ou pas ?
A suivre...
MM
Si il y a des erreurs ci dessus, c'est que je n'ai pas eu le temps de les corriger...
Excellent merci ! Le schéma semble correct. La variation de 20 à 100% c’est parfait aussi. Pour la modulation, j’étais plutôt parti sur des données en hertz, soit intervalle de temp: high to high, et non: low to high (=demi cycle)
Je pense qu’il serait mieux de séparer le circuit flash, que je pourrai raccorder (ou non) physiquement en parallèle à l’ampoule, en protégeant respectivement les deux sorties de circuit avec des diodes.
Cette programmation n’a pas l’air de vous paraître insurmontable. Est-ce grâce à la différence entre picaxe et Arduino ou bien la maîtrise du sujet ? Les deux sûrement..?
Bon, ben on continue, les tempo sont des détails à ajuster
Il faudrait définir "type feu de détresse"
Le programme est en "pseudo multitâches", en gros, des programmes indépendants qui peuvent partager des variables.
État des lieux:
MMCode:;Gestion éclairage F0GED ;Commande 1 sur C.4 :éclats lumineux temporisés N éclats =1 à 5 ;tempo 3 à 60s ;Commande 2 sur C.3 :clignotant feux détresse ;commande 3 sur C.2 :modulation sans flash ; modulation 20 à 100% de 3 à 20s ;commande 4 sur C.1 :commande 3 + flash ;sélection paramètres par potars ;affichage paramètres sur LCD I2C ;Programmation "mutitâches" ;tache0 : lecture des paramètres ;tache1 : affichage des paramètres ;tache2 : lecture des commandes 1,2,3,4 ;détection des modifs ; sélection des sub ; ;sortie PWM sur C.0 ;sortie flash sur B.0 #picaxe 14M2 #no_data ;pas d' EEPROM start0: symbol Necla=b1 ;nombre éclat symbol varb=b2 ;variable byte (8 bits) symbol Tecla=w13 ;temps entre séries éclats symbol Tmod=w12 ;temps modulation PWM symbol varw=w11 ;variable word (16 bits) symbol cpt=w10 ;compteur symbol RC=w9 ;rapport cyclique symbol Npot=B.1 ;N éclats commandes 1 et 4 symbol TEpot=B.2 ;Tempsentre séries éclats 3 à 60s symbol Pmod=B.5 ;Temps de cycle RC symbol SPWM=C.0 ;sortie PWM symbol com1=pinC.4 symbol com2=pinC.3 symbol com3=pinC.2 symbol com4=pinC.1 pullup %1111000000000 ;pullup sur C.4 à C.1 pwmout SPWM, 255,0 ;PWM 3900Hz : RC=0 do readadc Necla,varb Necla= 5 * varb/255 ;0 à 5 readadc Tecla,varb Tecla= 57*varb/255 +3 ;3 à 60s readadc10 Pmod,varw ;0 à 1023 Tmod= varw* 20 +3000 /823 ;3000/823 à 23420/823 ms loop start1: do gosub affich loop start2: ;sélection commande do if com1=0 then gosub command1 elseif com2=0 then gosub command2 elseif com3=0 then gosub command3 endif loop command1: do for cpt=1 to Necla pwmduty SPWM,1023 pause 1000 ;N éclats de 1s espacés de 3s pwmduty SPWM,0 pause 3000 next time=0 ;RAZ time do loop while time<= Tecla ;temps de pause entre séries éclats loop return command2: ;à définir return command3: ;modulation sans flash for cpt=1 to 823 ;il y a 823 pas RC de 200 à 1023 RC=200 + cpt pwmduty SPWM, RC pause Tmod ;temps de pause = Temps de modulation /823 next if com4=0 then ;sub flash en fin gosub command4 endif for cpt=823 to 1 RC=200+cpt pwmduty SPWM,RC pause Tmod next return command4: ;à définir return affich: ;à faire; return
Si il y a des erreurs ci dessus, c'est que je n'ai pas eu le temps de les corriger...
bonjour
juste une question de temps et de courageEst-ce grâce à la différence entre picaxe et Arduino ou bien la maîtrise du sujet ? Les deux sûrement..?
juste pour info F0GED:
avec arduino, le pwm est plus simple, on envoie 0 à 255 sur la sortie.
les syntaxes sont plus pointues, on oublie facilement les { } les () et les ;
exemple pour command3:
Code:void command3() { pot = analogRead (A0); // lecture potentiometre vitesse 0 a 1023 tempo= pot / 10 +2; // tempo=2 a 100mS for ( pwmValue = 25; pwmValue <= 255; pwmValue += 5) { analogWrite(ledPin, pwmValue); delay(tempo); } for ( pwmValue = 255 ; pwmValue >= 25; pwmValue -= 5) { analogWrite(ledPin, pwmValue); delay(tempo); } }
Ouhh ! Faudra pas m’envoyer ce genre de message demain, pas sûr d’arriver à décoder… HIx3
Ok parfait, en fait c’est même presque plus rapide que le trajet de chez moi à aller au club d’électronique )
Pour le clignotement, on peut partir sur 90 éclats/mn
Merci pour le temps consacré
Jérémie
Ah, au fait...
BONNES FÊTES DE FIN D’ANNÉE à TOUS
MM
Si il y a des erreurs ci dessus, c'est que je n'ai pas eu le temps de les corriger...
Bonjour,
Voici le programme du projet finalisé, mais non testé (semaine prochaine). Il y a sans doute des erreurs.
FOGED peut aussi le faire avec un arduino, je ne suis pas sectaire.
Code:;Gestion éclairage F0GED MM 020125 ;Commande 1 sur C.4 :éclats lumineux temporisés N éclats =1 à 5 ;tempo 3 à 60s ;Commande 2 sur C.3 :clignotant feux détresse ;commande 3 sur C.2 :modulation sans flash ; modulation 20 à 100% de 3 à 20s ;commande 4 sur C.1 :commande 3 + flash ;sélection paramètres par potars ;affichage paramètres sur LCD I2C 1602 ;tache0 : lecture des paramètres ;tache1 : affichage des paramètres ;tache2 : lecture des commandes 1,2,3,4 ;détection des modifs ; sélection des sub ; ;sortie PWM sur C.0 ;sortie flash sur B.0 #picaxe 14M2 #no_data ;pas d' EEPROM symbol rsbit=bit0 symbol Necla=b1 ;nombre éclat symbol varb=b2 ;variable byte (8 bits) symbol car=b3 ;caractère symbol dat=b4 ;data I2C symbol cent=b5 ;centaines symbol diz=b6 ;dizaines symbol unit=b7 ;unités symbol affmod=b8 ;affichage modulation symbol Tecla=w13 ;temps entre séries éclats symbol Tmod=w12 ;temps modulation PWM symbol varw=w11 ;variable word (16 bits) symbol cpt=w10 ;compteur symbol flash= B.0 ;sortie flash symbol Npot=B.1 ;N éclats commandes 1 et 4 symbol TEpot=B.2 ;Tempsentre séries éclats 3 à 60s ;B.3 ;B.4 réservés I2C symbol Pmod=B.5 ;Temps de cycle RC symbol SPWM=C.0 ;sortie PWM symbol com1=pinC.4 symbol com2=pinC.3 symbol com3=pinC.2 symbol com4=pinC.1 pullup %1111000011000 ;pullup sur C.4 à C.1 et B.3,B.4 ; Initialisation I2C 4 bits , etc ******** hi2csetup i2cmaster,%01001110, i2cslow, i2cbyte ; Initialisation LCD ********* for cpt=0 to 5 lookup cpt,($33,$32,$28,$c,$6,$01),car gosub EnvoiByteCommInit next pause 100 ;temps init du LCD do ;boucle lecture potars et affichage paramètres readadc Npot,varb ;0 à 255 Necla= 5 * varb/250 ;0 à 5 readadc TEpot,varb Tecla= 57*varb/250 +3 ;3 à 60s readadc10 Pmod,varb ;0 à 255 Affmod= 20*varb/250 +3 ;de 3 à 23 if com1=0 then gosub affich1 gosub command1 elseif com2=0 then gosub affich2 gosub command2 elseif com3=0 or com4=0 then gosub affich3 gosub command3 else gosub affich4 endif loop affich1: car=1 : gosub EnvoiByteComm ;raz LCD car= 128 : gosub EnvoiByteComm 'curseur début ligne1 for cpt=0 to 15 lookup cpt,("#1 Neclat Teclat"),car gosub EnvoiByteData next car=195 : gosub EnvoiByteComm bintoascii Necla,cent,diz,unit for cpt=1 to 3 lookup cpt,(cent,diz,unit),car gosub EnvoiByteData next car=202 : gosub EnvoiByteComm bintoascii Tecla, cent,diz,unit for cpt=1 to 3 lookup cpt,(cent,diz,unit),car gosub EnvoiByteData next return affich2: car=1 : gosub EnvoiByteComm ;raz LCD car= 128 : gosub EnvoiByteComm 'curseur début ligne1 for cpt=0 to 1 lookup cpt,("#2"),car gosub EnvoiByteData next return affich3: car=1 : gosub EnvoiByteComm ;raz LCD car= 128 : gosub EnvoiByteComm 'curseur début ligne1 for cpt=0 to 15 lookup cpt,("#3 Tmod Neclat "),car gosub EnvoiByteData next if com3=0 then Necla=0 endif car=195 : gosub EnvoiByteComm bintoascii Affmod,cent,diz,unit for cpt=1 to 3 lookup cpt,(cent,diz,unit),car gosub EnvoiByteData next car=201: gosub EnvoiByteComm bintoascii Necla,cent,diz,unit for cpt=1 to 3 lookup cpt,(cent,diz,unit),car gosub EnvoiByteData next return affich4: car=1 : gosub EnvoiByteComm ;raz LCD car= 128 : gosub EnvoiByteComm 'curseur début ligne1 for cpt=0 to 13 lookup cpt, (" Quel choix ?"),car gosub EnvoiByteData next return command1: ;éclats lumineux temporisés pwmout SPWM, off ;plus de PWM do for cpt=1 to Necla high SPWM pause 1000 ;N éclats de 1s espacés de 3s low SPWM pause 3000 next time=0 ;RAZ time do loop while time<= Tecla ;temps de pause entre séries éclats loop while com1=0 return command2: ;detresse 90 éclats / mn pwmout SPWM, off ;plus de PWM do high SPWM pause 300 low SPWM pause 400 loop while com2=0 return command3: ;modulation sans flash pwmout SPWM, 250,0 ;PWM 3985Hz : RC=0 Tmod=Affmod *10/4 ; de 3000 à 23000 pour 400 pas: do for cpt=200 to 1000 step 2 ;il y a 400 RC de 200 à 1000 pwmduty SPWM, cpt pause Tmod ;temps de pause = Temps de modulation /823 next if com4=0 then ;sub flash en fin gosub command4 endif for cpt=1000 to 200 pwmduty SPWM,cpt pause Tmod next loop while com3=0 return command4: for cpt=1 to Necla high flash pause 200 low flash next return affich: ;à faire;; Sub envoi vers LCD via I2C ************* EnvoiByteCommInit: pause 15 EnvoiByteComm: rsbit=0 EnvoiByteData: ;1ère moitié dat=car & $F0 | %1000 | rsbit ;%1000 pour l'?clairage hi2cout (dat) pause 2 dat=dat | %1100 hi2cout (dat) ;pulse sur E cad P2 pause 2 ;pause 2 pour 32 MHz dat=dat | %1000 ;fin pulse hi2cout (dat) pause 2 ;2ème moitié dat=car & $0F * 16 | %1000 | rsbit hi2cout (dat) pause 2 dat=dat | %1100 hi2cout (dat) pause 2 dat=dat | %1000 & %1011 hi2cout (dat) rsbit=1 return
Si il y a des erreurs ci dessus, c'est que je n'ai pas eu le temps de les corriger...
Évidement, je n'ai pas eu le temps de supprimer le message précédent, version monotâche non terminée, si un modo peut le faire, merci.
Le code que je voulais poster une version "multitâches". Il y a certainement autant d'erreurs à rectifier après test.
MMCode:;Gestion éclairage F0GED MM 020125 ;Commande 1 sur C.4 :éclats lumineux temporisés N éclats =1 à 5 ;tempo 3 à 60s ;Commande 2 sur C.3 :clignotant feux détresse ;commande 3 sur C.2 :modulation sans flash ; modulation 20 à 100% de 3 à 20s ;commande 4 sur C.1 :commande 3 + flash ;sélection paramètres par potars ;affichage paramètres sur LCD I2C 1602 ;Programmation "mutitâches" ;tache0 : lecture des paramètres ;tache1 : affichage des paramètres ;tache2 : lecture des commandes 1,2,3,4 ;détection des modifs ; sélection des sub ; ;sortie PWM sur C.0 ;sortie flash sur B.0 #picaxe 14M2 #no_data ;pas d' EEPROM start0: symbol rsbit=bit0 symbol Necla=b1 ;nombre éclat symbol varb=b2 ;variable byte (8 bits) symbol car=b3 ;caractère symbol dat=b4 ;data I2C symbol cent=b5 ;centaines symbol diz=b6 ;dizaines symbol unit=b7 ;unités symbol affmod=b8 ;affichage modulation symbol choix=b9 ; symbol Tecla=w13 ;temps entre séries éclats symbol Tmod=w12 ;temps modulation PWM symbol varw=w11 ;variable word (16 bits) symbol cpt=w10 ;compteur symbol flash= B.0 ;sortie flash symbol Npot=B.1 ;N éclats commandes 1 et 4 symbol TEpot=B.2 ;Tempsentre séries éclats 3 à 60s ;B.3 ;B.4 réservés I2C symbol Pmod=B.5 ;Temps de cycle RC symbol SPWM=C.0 ;sortie PWM symbol com1=pinC.4 symbol com2=pinC.3 symbol com3=pinC.2 symbol com4=pinC.1 pullup %1111000011000 ;pullup sur C.4 à C.1 et B.3,B.4 ; Initialisation I2C 4 bits , etc ******** hi2csetup i2cmaster,%01001110, i2cslow, i2cbyte ; Initialisation LCD ********* for cpt=0 to 5 lookup cpt,($33,$32,$28,$c,$6,$01),car gosub EnvoiByteCommInit next pause 100 ;temps init du LCD do ;boucle lecture potars et affichage paramètres readadc Npot,varb ;0 à 255 Necla= 5 * varb/250 ;0 à 5 readadc TEpot,varb Tecla= 57*varb/250 +3 ;3 à 60s readadc10 Pmod,varb ;0 à 255 Affmod= 20*varb/250 +3 ;de 3 à 23 if com1=0 then choix=0 gosub affich1 elseif com2=0 then choix=1 gosub affich2 elseif com3=0 or com4=0 then choix=2 gosub affich3 else choix=3 gosub affich4 endif loop affich1: car=1 : gosub EnvoiByteComm ;raz LCD car= 128 : gosub EnvoiByteComm 'curseur début ligne1 for cpt=0 to 15 lookup cpt,("#1 Neclat Teclat"),car gosub EnvoiByteData next car=195 : gosub EnvoiByteComm bintoascii Necla,cent,diz,unit for cpt=1 to 3 lookup cpt,(cent,diz,unit),car gosub EnvoiByteData next car=202 : gosub EnvoiByteComm bintoascii Tecla, cent,diz,unit for cpt=1 to 3 lookup cpt,(cent,diz,unit),car gosub EnvoiByteData next return affich2: car=1 : gosub EnvoiByteComm ;raz LCD car= 128 : gosub EnvoiByteComm 'curseur début ligne1 for cpt=0 to 1 lookup cpt,("#2"),car gosub EnvoiByteData next return affich3: car=1 : gosub EnvoiByteComm ;raz LCD car= 128 : gosub EnvoiByteComm 'curseur début ligne1 for cpt=0 to 15 lookup cpt,("#3 Tmod Neclat "),car gosub EnvoiByteData next if com3=0 then Necla=0 endif car=195 : gosub EnvoiByteComm bintoascii Affmod,cent,diz,unit for cpt=1 to 3 lookup cpt,(cent,diz,unit),car gosub EnvoiByteData next car=201: gosub EnvoiByteComm bintoascii Necla,cent,diz,unit for cpt=1 to 3 lookup cpt,(cent,diz,unit),car gosub EnvoiByteData next return affich4: car=1 : gosub EnvoiByteComm ;raz LCD car= 128 : gosub EnvoiByteComm 'curseur début ligne1 for cpt=0 to 13 lookup cpt, (" Quel choix ?"),car gosub EnvoiByteData next return start1: ;sélection commande do on choix gosub command1,command2,command3 ;choix de 0 à 2 loop command1: ;éclats lumineux temporisés pwmout SPWM, off ;plus de PWM do for cpt=1 to Necla high SPWM pause 1000 ;N éclats de 1s espacés de 3s low SPWM pause 3000 next time=0 ;RAZ time do loop while time<= Tecla ;temps de pause entre séries éclats loop while com1=0 return command2: ;detresse 90 éclats / mn pwmout SPWM, off ;plus de PWM do high SPWM pause 300 low SPWM pause 400 loop while com2=0 return command3: ;modulation sans flash pwmout SPWM, 250,0 ;PWM 3985Hz : RC=0 Tmod=Affmod *10/4 ; de 3000 à 23000 pour 400 pas: do for cpt=200 to 1000 step 2 ;il y a 400 RC de 200 à 1000 pwmduty SPWM, cpt pause Tmod ;temps de pause = Temps de modulation /823 next if com4=0 then ;sub flash en fin gosub command4 endif for cpt=1000 to 200 pwmduty SPWM,cpt pause Tmod next loop while com3=0 return command4: for cpt=1 to Necla high flash pause 200 low flash next return affich: ;à faire;; Sub envoi vers LCD via I2C ************* EnvoiByteCommInit: pause 15 EnvoiByteComm: rsbit=0 EnvoiByteData: ;1ère moitié dat=car & $F0 | %1000 | rsbit ;%1000 pour l'?clairage hi2cout (dat) pause 2 dat=dat | %1100 hi2cout (dat) ;pulse sur E cad P2 pause 2 ;pause 2 pour 32 MHz dat=dat | %1000 ;fin pulse hi2cout (dat) pause 2 ;2ème moitié dat=car & $0F * 16 | %1000 | rsbit hi2cout (dat) pause 2 dat=dat | %1100 hi2cout (dat) pause 2 dat=dat | %1000 & %1011 hi2cout (dat) rsbit=1 return
Si il y a des erreurs ci dessus, c'est que je n'ai pas eu le temps de les corriger...
Bonjour et une bonne année à tous !
Super pour le codage, un gros casse tête d’évité pour moi.. merci !
Je suis en train de faire la liste des composants. Donc picaxe 14m2 ? Je me demande quelle intensité choisir pour les 10k et 390 0hm ?
Pour le condensateur, est-ce qu’un X2 (réf 15753 gotronic) conviendrait ?
Leur afficheur 03393 conviendrait-il ?
Régulateur 5v (02460?)
Mosfet ttl (35243?)
La programmation du picaxe se fait elle une fois implantée sur le circuit ou sur un support dédié à trouver aussi ? Merci
Jérémie
Bonjour, et bonne année...Je suis en train de faire la liste des composants. Donc picaxe 14m2 ? Je me demande quelle intensité choisir pour les 10k et 390 0hm ?
Pour le condensateur, est-ce qu’un X2 (réf 15753 gotronic) conviendrait ?
Leur afficheur 03393 conviendrait-il ?
Régulateur 5v (02460?)
Mosfet ttl (35243?)
Alors:
chez Gotro
https://www.gotronic.fr/art-microcon...14m2-17191.htm
Pour l'état actuel du projet, mais le 14M2 n'a plus de patte libre. Donc, si tu envisages des évolutions, le 20M2, 20cts de plus a plus de possibilités. A voir.
le régulateur: https://www.gotronic.fr/art-l7805cv-1578.htm
les condos:
https://www.gotronic.fr/art-l7805cv-1578.htm
https://www.gotronic.fr/art-condensa...00-nf-3222.htm
résistances: https://www.gotronic.fr/art-10-resis...0k-8486-19.htm
prendre aussi des 1k et 390 dans la même gamme.
Pour l'afficheur, il est prévu un 1602 I2C . L'I2C n'est pas le plus commode avec le picaxe, un série "picaxe" est plus pratique mais il faut se fabriquer un adaptateur.
Bref: l'I2C https://www.aliexpress.com/item/1005...Cquery_from%3A
Il n'y a pas de connecteurs femelles sur l'afficheur (il est prévu de le souder direct)
Je conseille : https://www.aliexpress.com/item/1005...Cquery_from%3A
Les équivalents sécables chez Gotro ont disparus. On peut couper quand même...
Pour le mosfet, un IRL540 : https://www.gotronic.fr/art-transist...540n-14701.htm . Il y en a de meilleurs, faudrait chercher ailleurs.
Pour la programmation: Il y a cette page: http://electromag1.wifeo.com/cordon-...ation-usb-.php.
On peut prévoir une programmation sur site, il faut deux R de 10k sur la carte et un connecteur 3 pins
L'adaptateur USB/RS232 : https://www.aliexpress.com/item/1005...Cquery_from%3A
RAPPEL: le code ne sera testé que la semaine prochaine
A suivre
MM
Dernière modification par mag1 ; 03/01/2025 à 21h50.
Si il y a des erreurs ci dessus, c'est que je n'ai pas eu le temps de les corriger...
Parce que c'est ce qu'ils sont. Tu n'as aucune idées de ce comment opère le firmware dans ton PIC, le code est propriétaire. Pour faire du PICAXE il faut acheter un PICAXE.
S'il y a un beug dans le firmware, personne n'a la possibilité d'aller voir ce qui se passe, et son éventuelle correction sera au bon vouloir du fabricant.
Et si un jour ils décident de passer à autre chose (ou qu'ils coulent...) tu pourras acheter autant de PIC vierges que tu veux, tu ne referas jamais d'autres PICAXE
Arduino c'est open-source et le fruit d'un travail communautaire. Tu peux aller voir ce qui se passe "sous le capot" et même le modifier / l'améliorer si tu as le besoin / les compétences.
Tu n'est pas lié à un éditeur. Tu peux acheter un atmega vierge et faire ton propre arduino.
Et tu n'est même pas lié a Microchip pour le microcontrôleur puisque le framwork Arduino est adapté (et adaptable) à plein de familles de µC
Et sinon, dans un autre registre, réaliser les projets à la place des demandeurs c'est bien beau mais comme dit le proverbe chinois :
si tu donnes un poisson à un homme, il mangera à un jour, mais si tu lui apprends à pêcher, il mangera toute sa vie.
Tout projet flou conduit à une connerie précise !
Bonjour Forhorse et bonne année
"si tu donnes un poisson à un homme, il mangera à un jour, mais si tu lui apprends à pêcher, il mangera toute sa vie."
Belle formule, mais je pense que partant de rien, on arrive pas à grand chose. J'ai souvent appris par l'exemple, c'est ce que j'essaye de faire
Chaque µC a ses avantages et inconvénients. L'avantage du picaxe et du basic est la simplicité, destiné à l'éducation, rien n’empêche de passer ensuite à autre chose : arduino ou autres.
Personne n'a jamais encore constaté de bug dans le firmware, picaxe. Il y a aussi des problèmes de compilateur.
Contrairement à l'arduino, on est parfois obligé de comprendre ce que l'on fait, par ex. pour utiliser un LCD I2C. Il n'y a pas de biblio qui fait tout sans rien comprendre.
Et si le picaxe disparait, on prendra des arduino qui ne manque pas d'intérêts, c'est une autre école, son C est tout aussi décrié par les puristes.
Chacun fait comme il veut et si FOGED, ici présent, solutionne ses problèmes avec un arduino et son club d'informatique, je lui dirais BRAVO.
MM
Si il y a des erreurs ci dessus, c'est que je n'ai pas eu le temps de les corriger...
Ah oui ? ben là par contre je pense que c'est toi qui ne comprend pas sur quoi est basé tes cher picaxe
A ton avis quand tu fais, par exemple, un
c'est quoi, sinon l'utilisation d'une librairie ?Code:hi2csetup i2cmaster,%01001110, i2cslow, i2cbyte
Tout projet flou conduit à une connerie précise !
bonjour
je ne rentre surtout pas dans la discussion Picaxe Vs Arduino...
par contre un afficheur 1602 + i2c à 0,99€, c'est risqué...
tout comme un Arduino Nano à 1€.
Cdlt
Dernière modification par Pascal071 ; 04/01/2025 à 15h43.
Je ne les oppose pas non plus...
Pour Le chinois, oui, c'est surprenant, mais jusqu'à présent, je n'ai jamais eu de problème, et même si il y en avait, on ne perd pas grand chose...
Et en général, c'est remboursé ou remplacé.
On peut bien sûr trouver plus cher, sans être sûr qu'il ne vienne pas du même fournisseur.
JLCPCB est tout aussi surprenant
MM
Si il y a des erreurs ci dessus, c'est que je n'ai pas eu le temps de les corriger...