Marc
Nombre de messages : 2397 Age : 63 Localisation : TOURS (37) Date d'inscription : 17/03/2014
| Sujet: Domotique et électronique : deux SUBs pour Arduino MEGA 2560 Mer 3 Aoû 2022 - 14:08 | |
| Bonjour à tous ! => Retrouvez le même article adapté pour l'Arduino UNO et NANO ici : https://panoramic.1fr1.net/t6775-domotique-et-electronique-deux-subs-pour-arduino-nano-unoAfin de simplifier la conception d’un programme Panoramic en vue de piloter facilement les 52 sorties digitales d’un Arduino MEGA 2560, je vous propose deux sous-programmes (SUB). La première SUB va créer la voie de communication entre Panoramic et l’Arduino. - Code:
-
sub initalisationLiaisonSerie(PortCom%) dim_local texte$ if serial_port_exists(portCom%) = 0 texte$ = "Le port COM" + str$(portCom%) + " n'est pas disponible !" + chr$(13) + chr$(13) texte$ = texte$ + "Vérifiez le numéro de port COM ainsi que les connexions électriques." if message_error_ok(texte$) < 2 terminate end_if end_if serial 1 serial_port 1,portCom% serial_baudrate 1,9600 serial_databits 1,8 serial_parity 1,0 serial_stopbits 1,1 serial_open 1 end_sub Appel de la sub : initalisationLiaisonSerie(N)N est un entier compris entre 1 et 255. Il représente le numéro du port COM attribué par Windows au port USB sur lequel est connecté l’Arduino. Le sous-programme crée et initialise la liaison série. Dans cet exemple, le numéro d’objet Panoramic SERIAL est le 1. Cette SUB est à appeler une seule et unique fois au lancement du programme. La deuxième SUB permet de commander l’état (0 ou 1) de la sortie digitale souhaitée. - Code:
-
sub sortieDigitale(d_out%,etat%) if d_out% < 2 or d_out% > 53 exit_sub end_if if etat% < 0 or etat% > 1 exit_sub end_if serial_write 1,chr$(d_out%)+chr$(etat%)+chr$(255) end_sub
Appel de la SUB : sortieDigitale(N,V)N est un entier compris entre 2 et 53. Il représente le numéro de la sortie digitale de l’Arduino que l’on souhaite cibler. V est un entier de valeur 0 ou 1. Il représente l’état souhaité de la sortie digitale N. - La valeur 0 met la sortie digitale N au niveau bas (0 volt). - La valeur 1 met la sortie digitale N au niveau haut (+5volts). Exemples : Pour mettre la sortie digital 48 à l’état haut, il suffit d’écrire : sortieDigitale(48,1)Pour mettre la sortie digital 22 à l’état bas : sortieDigitale(22,0)Mise en pratique des deux SUBs dans un programme : - Code:
-
' Commande des sorties digitales 2 à 53, pour l'Arduino MEGA 2560 ' Marc - Aout 2022 ' Ecrit en langage Panoramic 0.9.29i9
initalisationLiaisonSerie(4) :' Indiquez en paramètre le numéro de port COM utilisé par la carte Arduino
' exemples : sortieDigitale(28,1) :' la sortie digitale 28 de l'Arduino est mise à 1 sortieDigitale(49,1) :' la sortie digitale 49 de l'Arduino est mise à 1
end ' ------------------------------------------------------------------------------ sub sortieDigitale(d_out%,etat%) if d_out% < 2 or d_out% > 53 exit_sub end_if if etat% < 0 or etat% > 1 exit_sub end_if serial_write 1,chr$(d_out%)+chr$(etat%)+chr$(255) end_sub ' ------------------------------------------------------------------------------ sub initalisationLiaisonSerie(PortCom%) dim_local texte$ if serial_port_exists(portCom%) = 0 texte$ = "Le port COM" + str$(portCom%) + " n'est pas disponible !" + chr$(13) + chr$(13) texte$ = texte$ + "Vérifiez le numéro de port COM ainsi que les connexions électriques." if message_error_ok(texte$) < 2 terminate end_if end_if serial 1 serial_port 1,portCom% serial_baudrate 1,9600 serial_databits 1,8 serial_parity 1,0 serial_stopbits 1,1 serial_open 1 end_sub Remarque : Ne jamais utiliser les sorties digitales 0 et 1. Elles sont réservées en interne pour la liaison série entre Panoramic et l’Arduino. Voici le code à téléverser dans l’Arduino MEGA 2560 pour qu’il obéisse aux commandes issues du code Panoramic : - Code:
-
void setup() { Serial.begin(9600); for (int n=2; n <= 53; n++) { pinMode(n,OUTPUT); } }
void loop() { char buf[3]; if (Serial.available()) { int trameRecue = Serial.readBytesUntil(255,buf,3); int numeroGpio = buf[0]; if (buf[1] == 1) digitalWrite(numeroGpio,HIGH); else digitalWrite(numeroGpio,LOW); } } Bonne programmation et bonnes réalisations avec le couple Panoramic / Arduino ! | |
|