| | [TUTO] Pilotage de Ledstrip adressable style "Teensy" via WEMOS D1 PRO | |
|
+78traxx59 fastevie nicofab18 Moussounet Richard leguluc medax badcat khinyo moviemaniac52 Migath Nanard54 ventrax ebor hbenjam1 ParMesSoins Snorky bapt1080 yanfox tyra38 poussmouss75 JLLL BorisFR xavuis arnoz vnguyenquangdo valsy Suby Sebcemoi isob Matlo74 Gate katzd lyoxide MAXxXAM Sblawx KM3L0TT MrPomme MarbleMad mpierre paf_prod foudcox Benoit33 doraj90 Rappelbox zedrummer mikuslegrand jawah jadawin59 Mike72160 Arkan07 jolesharky razorbaxx wspawn Drask BonZ@i uncels goliath59 kev1 jphil82 bao rodolpher mariela davsouto snwfrd38 Billy54 Shadow_SHD leopold Pincabonaute peskopat ced manples kakou leevuth TylerDurden67 sebx mariopourlavie Aetios 82 participants | |
Auteur | Message |
---|
kakou
Messages : 558 Département : 18
| Sujet: Re: [TUTO] Pilotage de Ledstrip adressable style "Teensy" via WEMOS D1 PRO Sam 20 Mai 2017 - 11:18 | |
| Arf, ca fait 10 ans que j'ai pas fait de programme pour windows , mais bon je vais faire un petit truc light en C#. Je te propose une petite fenetre graphique pour entrée la taille (nombre de leds) pour 4 ledstrips (ca devrait suffire). Un champs pour choisir le nom du port COM Et un bouton Save pour l'envoyer en usb a l'arduino/wemos Ca te va ? Tu as besoin du code aussi pour le recevoir coté arduino et stocker/lire depuis l'eeprom ? | |
| | | Aetios Modérateur + Team PP
Messages : 1665 Département : 50
| Sujet: Re: [TUTO] Pilotage de Ledstrip adressable style "Teensy" via WEMOS D1 PRO Sam 20 Mai 2017 - 11:47 | |
| [Vous devez être inscrit et connecté pour voir ce lien] : pour le petit programme en C++, ça serait top on peut même imaginer l'étendre pour gérer la config du DOF qui reste pas évidente pour le commun des mortels... bon sinon j'ai tout installé, injecter le code que j'ai modifié et copier ton DOF modifié, mais je n'ai pas de réaction des ledstrips. Peux-tu m'expliquer comment tu fais pour avoir un fichier log ou debug du DOF pour que je puisse affiner ma recherche. sinon j'ai un petit soucis à la compilation du code ino, voici le message qu'il me met: - Code:
-
In file included from sketch\LedStrip.h:18:0,
from C:\Users\deloa\Desktop\ArduinoStripController\ArduinoStripController.ino:8:
C:\Users\deloa\OneDrive\Documents\Arduino\libraries\FastLED/FastLED.h:17:21: note: #pragma message: FastLED version 3.001.003
# pragma message "FastLED version 3.001.003"
^
In file included from C:\Users\deloa\Desktop\ArduinoStripController\ArduinoStripController.ino:8:0:
sketch\LedStrip.h: In member function 'int LedStrip::color(uint8_t, uint8_t, uint8_t)':
sketch\LedStrip.h:40:24: warning: left shift count >= width of type
return (red << 16) | (green << 8) | blue;
^
In file included from sketch\LedStrip.h:18:0,
from sketch\LedStrip.cpp:2:
C:\Users\deloa\OneDrive\Documents\Arduino\libraries\FastLED/FastLED.h:17:21: note: #pragma message: FastLED version 3.001.003
# pragma message "FastLED version 3.001.003"
^
In file included from sketch\LedStrip.cpp:2:0:
sketch\LedStrip.h: In member function 'int LedStrip::color(uint8_t, uint8_t, uint8_t)':
sketch\LedStrip.h:40:24: warning: left shift count >= width of type
return (red << 16) | (green << 8) | blue;
^
sketch\LedStrip.cpp: In member function 'void LedStrip::setPixel(uint32_t, int)':
sketch\LedStrip.cpp:58:25: warning: right shift count >= width of type
leds[num].r=((color >> 16)& 0xFF); // Shift the integer right 8 bits.
^
Le croquis utilise 8208 octets (3%) de l'espace de stockage de programmes. Le maximum est de 253952 octets. Les variables globales utilisent 3653 octets (44%) de mémoire dynamique, ce qui laisse 4539 octets pour les variables locales. Le maximum est de 8192 octets.
si tu as une idée d'où vient le problème | |
| | | kakou
Messages : 558 Département : 18
| Sujet: Re: [TUTO] Pilotage de Ledstrip adressable style "Teensy" via WEMOS D1 PRO Sam 20 Mai 2017 - 12:35 | |
| [Vous devez être inscrit et connecté pour voir ce lien], c++ c'est hasbeen, DOF est en C# Pour les warning a la compil, j'ai la même chose, mais c'est pas grave Pour le debug, il faut une wemos pour envoyer les traces en wifi, sinon avec une arduyino, faut mettre un deuxieme port serie en softwareserial et le connecter via un adaptateur usb FTDI pour récupérer les traces sur un deuxieme port com Est-ce que tu as des traces dans le fichier de log de dof ? dans la version que je t'ai filé, j'affiche tous les ordres de DOF dans les logs (il faut activer les logs dans dofconfig, et regarder dans le fichier directoutpout.log) | |
| | | Aetios Modérateur + Team PP
Messages : 1665 Département : 50
| Sujet: Re: [TUTO] Pilotage de Ledstrip adressable style "Teensy" via WEMOS D1 PRO Sam 20 Mai 2017 - 13:11 | |
| [Vous devez être inscrit et connecté pour voir ce lien] : non mais déjà j'ai un problème de définition des leds car dans le code je vois qu'il y a un test des leds dans void setup et rien ne s'allume. j'avoue que je suis un paumé avec les 3 fichiers le ino, le cpp et le h. ça m'embrouille. Je vais faire des essais tantôt. Oui et puis désolé, mais je suis resté bloqué au C++ | |
| | | kakou
Messages : 558 Département : 18
| Sujet: Re: [TUTO] Pilotage de Ledstrip adressable style "Teensy" via WEMOS D1 PRO Sam 20 Mai 2017 - 14:55 | |
| Pour le PIN, c'est dans LedStrip.cpp
#define DATA_PIN 12 // GPIO12 / D6 on WeMos/NodeMCU ESP8266 | |
| | | Aetios Modérateur + Team PP
Messages : 1665 Département : 50
| Sujet: Re: [TUTO] Pilotage de Ledstrip adressable style "Teensy" via WEMOS D1 PRO Sam 20 Mai 2017 - 16:19 | |
| [Vous devez être inscrit et connecté pour voir ce lien] : ça je l'avais vu mais j'ai bien le bon PIN DATA mais ça bronche pas. Du coup, je suis reparti de ton code juste en enlevant la partie wifi par contre j'ai le sentiment que je passe a coté de plein de chose du fait que le code part dans tous les sens du coup je n'arrive même à allumer une simple LED. Je ne comprends pas pourquoi ce code est si compliqué, avec autant de variable qui porte le même nom ou presque, pour moi y'a un tas de fonction zarbi qu'on pourrait éviter ou regrouper pour en faciliter la lecture, mais j'ose pas parce que je ne maîtrise pas toute la syntaxe. Exemple choisi : rien que CRGB dans le code, pourquoi il y un * ? c'est même pas dans la doc de la librairie. Normalement c'est CRGB leds[le_nombre_totale_de_leds) Et puis pourquoi éparpiller le code sur 3 fichiers. C'est le code d'origine qui est fait comme ça ? Bref, ça fait 2 heures que j'essaie un peu tout et n'importe quoi et j'arrive même pas à avoir l'effet d'initialisation des leds du void_setup Bref kakou, merci d'éclairer ma lanterne je vais tondre ma pelouse, ça va me détendre | |
| | | kakou
Messages : 558 Département : 18
| Sujet: Re: [TUTO] Pilotage de Ledstrip adressable style "Teensy" via WEMOS D1 PRO Sam 20 Mai 2017 - 18:12 | |
| Oui pour l'instant j'ai juste hacker a la sauvage le code du teensyledcontroller, mais y'a moyen de le purifier et simplifier un max, et surtout mettre dans un seul .ino
CRGB * c'est une référence (pointeur) vers un CRGB[] du genre, le static CRGB *leds; dans le fichier ledstrip.cpp c'est une référence vers la déclaration CRGB leds[MaxLedsPerStrip]; du fichier aduino....ino
Tu as bien une masse comune ? Sinon, essaie de brancher un voltmetre pour voir si tu as du jus qui sort du PIN data | |
| | | Aetios Modérateur + Team PP
Messages : 1665 Département : 50
| Sujet: Re: [TUTO] Pilotage de Ledstrip adressable style "Teensy" via WEMOS D1 PRO Sam 20 Mai 2017 - 18:41 | |
| [Vous devez être inscrit et connecté pour voir ce lien] : non t'inquiètes, tu penses bien que le premier truc que j'ai fait c'est de mettre un autre code voir si mes leds fonctionnent. C'est le cas, elles fonctionnes toutes parfaitement. Non, mon soucis vient bien de ce code mais comme je lui enlève tout ce qui utilises le wifi, je me dis qu'il y a peut être une ligne qq part qui merdouille. Par contre le DOF envoie bien des requêtes que je trouve dans le log, donc de ce point de vue, je pense que c'est ok. Faut que je trouve comme allumer ces leds et c'est tout Je vais lister les différentes variables déjà et je vais voire avec toi laquelle est quoi. | |
| | | kakou
Messages : 558 Département : 18
| Sujet: Re: [TUTO] Pilotage de Ledstrip adressable style "Teensy" via WEMOS D1 PRO Sam 20 Mai 2017 - 19:36 | |
| | |
| | | Aetios Modérateur + Team PP
Messages : 1665 Département : 50
| Sujet: Re: [TUTO] Pilotage de Ledstrip adressable style "Teensy" via WEMOS D1 PRO Dim 21 Mai 2017 - 14:05 | |
| [Vous devez être inscrit et connecté pour voir ce lien] : bon j'ai résolu mon problème d'allumage de LED. J'ai réussi à faire fonctionner le void setup. Je suis en train de regrouper le code dans un seul .ino. j'avance doucement mais surement. Si je bloque je te partage le code ici. peux tu m'expliquer comment fonctionne le code qui permet de recupérer le code par couleur - Code:
-
leds[num].b=(color & 0xFF); // Take just the lowest 8 bits. leds[num].g=((color >> 8)& 0xFF); // Shift the integer right 8 bits. leds[num].r=((color >> 16)& 0xFF); // Shift the integer right 8 bits.
Pour info, je suis en train de simplifier toutes les fonctions et j'ai viré toutes les fonctions ledstrip.machinchose pour les rempalcer par des fonctions simples directement dans .ino. De plus j'ai dégager les fonctions qui servent à rien comme ledstrip.show, qui est égale à FastLED.show() Bref plein de petites choses comme ça qui font que j'y vois plus clair Je te tiens au jus | |
| | | kakou
Messages : 558 Département : 18
| Sujet: Re: [TUTO] Pilotage de Ledstrip adressable style "Teensy" via WEMOS D1 PRO Dim 21 Mai 2017 - 14:17 | |
| La couleur est stockée dans un entier de 32 bits De droite a gauche, les 8 premiers encode le bleu, les 8 suivants le vert, et ensuite le rouge Les opérations ci-dessous (on appel ça masquage) permettent de récupérer les couleurs (c'est de l'algèbre de boule lien leds[num].b=(color & 0xFF); // Take just the lowest 8 bits. on vire les 28 premiers bits en faisant un & (et) entre la couleur et 0--28x0---01--8x1--1, le 1 permet de conserver le bit, le zéro l'efface (le met a zéro) leds[num].g=((color >> & 0xFF); // Shift the integer right 8 bits. on décale de 8 bit a droite (>> et on ne garde que les 8 dernier bit leds[num].r=((color >> 16)& 0xFF); // Shift the integer right 8 bits. on décale de 16 bit a droite (>> et on ne garde que les 8 dernier bit | |
| | | Aetios Modérateur + Team PP
Messages : 1665 Département : 50
| Sujet: Re: [TUTO] Pilotage de Ledstrip adressable style "Teensy" via WEMOS D1 PRO Dim 21 Mai 2017 - 14:38 | |
| [Vous devez être inscrit et connecté pour voir ce lien] Merci pour le tuyau, du coup j'ai un peu modifié l'opération... ...mais ça marche pas : voici l'erreur - Code:
-
2017.05.21 14:29:53.758 EXCEPTION: TeensyStripController LedStripController updater thread could not connect to the controller. Thread will quit. 2017.05.21 14:29:53.758 EXCEPTION: Thread: TeensyStripController LedStripController updater thread 2017.05.21 14:29:53.758 EXCEPTION: Message: Exception --> Expected a Ack (A) after setting the number of leds per channel, but received no answer or a unexpected answer. Will not send data to the controller. 2017.05.21 14:29:54.044 EXCEPTION: Stacktrace: à DirectOutput.Cab.Out.AdressableLedStrip.TeensyStripController.ConnectToController() dans C:\Users\arcade\Desktop\DirectOutput-3f16f7ef06b928429aa1bb3a9c3f4a17bc8a50e0\DirectOutput\Cab\Out\AdressableLedStrip\TeensyStripController.cs:ligne 592 2017.05.21 14:29:54.048 EXCEPTION: Stacktrace: à DirectOutput.Cab.Out.OutputControllerCompleteBase.UpdaterThreadDoIt() dans C:\Users\arcade\Desktop\DirectOutput-3f16f7ef06b928429aa1bb3a9c3f4a17bc8a50e0\DirectOutput\Cab\Out\OutputControllerCompleteBase.cs:ligne 333 2017.05.21 14:29:54.066 EXCEPTION: Targetsite: Void ConnectToController() 2017.05.21 14:29:54.079 Debug: Close Port et voici le code ino : - Code:
-
/******************************************************************************************************** ** Arduino Ledstrip Controller ********************************************************************************************************/ #define SERIAL_BUFFER_SIZE 1024 // Définie la taille du Buffer du port Série #include <elapsedMillis.h> // Appel de la librairie permettant de gérer le clignotement d'une LED de contrôle #include <FastLED.h> //#include "LedStrip.h" // Appel du fichier LedStrip.h joint au présnet code ino. #include <string.h>
//Definiton of Major and Minor part of the firmware version. This value can be received using the V command. //If something is changed in the code the number should be increased. #define FirmwareVersionMajor 1 #define FirmwareVersionMinor 1
//Defines the max number of ledstrip which is allowed per ledstriptrip. //This number is fine for Teensy 3.2, 3.1. For newer Teensy versions (they dont exists yet) it might be possible to increase this number. #define NombreLeds 106
//Defines the Pinnumber to which the built in led of the Teensy is connected. //For Teensy 3.2, 3.1 this is pin 13, if you use a newer Teensy version (not available at the time of writing) you might need to change this number. #define LedPin 10 // 10 #define DATA_PIN1 2 // ledstrip gauche #define DATA_PIN2 3 // lestrip droit #define BRIGHTNESS 150 #define LED_TYPE WS2812B #define COLOR_ORDER GRB
//Variable used to control the blinking and flickering of the led of the Teensy elapsedMillis BlinkTimer; int BlinkMode; elapsedMillis BlinkModeTimeoutTimer;
#define UPDATES_PER_SECOND 100
CRGBArray<NombreLeds> leds;
//Setup of the system. Is called once on startup. void setup() { Serial.begin(9600); while(Serial.available()) {Serial.read();}; delay(100); Serial.println("");
//Initialize the lib for the ledstrip FastLED.addLeds<LED_TYPE, DATA_PIN1, COLOR_ORDER>(leds, NombreLeds/2).setCorrection( TypicalLEDStrip ); FastLED.addLeds<LED_TYPE, DATA_PIN2, COLOR_ORDER>(leds, NombreLeds/2, NombreLeds/2).setCorrection( TypicalLEDStrip ); FastLED.setBrightness( BRIGHTNESS ); //Initialize the led pin pinMode(LedPin,OUTPUT);
SetBlinkMode(0); for(int ledNr=0; ledNr<NombreLeds; ledNr++) { LedSetPixel(ledNr, 255, 0, 0); } FastLED.show(); delay(1000);
ClearAllLedData(); FastLED.show(); delay(1000);
for(int ledNr=0; ledNr<NombreLeds; ledNr++) { LedSetPixel(ledNr, 0, 255, 0); } FastLED.show(); delay(1000);
ClearAllLedData(); FastLED.show(); delay(1000); for(int ledNr=0; ledNr<NombreLeds; ledNr++) { LedSetPixel(ledNr, 0, 0, 255); } FastLED.show(); delay(1000);
ClearAllLedData(); FastLED.show(); delay(1000); }
static byte receivedByte;
//Main loop of the programm gets called again and again. void loop() { /* static uint8_t hue; for(int i = 0; i < NombreLeds/2; i++) { // fade everything out leds.fadeToBlackBy(40);
// let's set an led value leds[i] = CHSV(hue++,255,255);
// now, let's first 20 leds to the top 20 leds, leds(NombreLeds/2,NombreLeds-1) = leds(NombreLeds/2 - 1 ,0); FastLED.delay(33); }*/ //ArduinoOTA.handle(); //Check if data is available if (Serial.available() > 0) { receivedByte = Serial.read(); /* #ifdef DEBUG_ON_WIFI wifidebug.tcp_receive_debug(receivedByte); #endif */ switch (receivedByte) { case 'L': // ne sert à rien, la longueur du LedStrip est géré directement dans le code ino //Set length of strips //SetLedStripLength(); break; case 'F': //Fill strip area with color Fill(); break; case 'R': //receive data for strips ReceiveData(); break; case 'O': //output data on strip OutputData(); break; case 'C': //Clears all previously received led data ClearAllLedData(); break; case 'V': //Send the firmware version SendVersion(); break; case 'M': // ne sert à rien non plus //Get max number of ledstrip per strip SendMaxNumberOfLeds(); break; default: // no unknown commands allowed. Send NACK (N) Nack(); break; } SetBlinkMode(1); } Blink(); }
void LedSetPixel(uint32_t num, int red, int green, int blue) { leds[num].b=(blue & 0xFF); // Take just the lowest 8 bits. leds[num].g=(green & 0xFF); // Shift the integer right 8 bits. leds[num].r=(red & 0xFF); // Shift the integer right 8 bits. }
//Sets the mode for the blinking of the led void SetBlinkMode(int Mode) { BlinkMode=Mode; BlinkModeTimeoutTimer=0; }
//Controls the blinking of the led void Blink() { switch(BlinkMode) { case 0: //Blinkmode 0 is only active after the start of the Teensy until the first command is received. if(BlinkTimer<1500) { digitalWrite(LedPin,0); } else if(BlinkTimer<1600) { digitalWrite(LedPin,1); } else { BlinkTimer=0; digitalWrite(LedPin,0); } break; case 1: //Blinkmode 1 is activated when the Teensy receives a command //Mode expires 500ms after the last command has been received resp. mode has been set if(BlinkTimer>30) { BlinkTimer=0; digitalWrite(LedPin,!digitalRead(LedPin)); } if(BlinkModeTimeoutTimer>500) { SetBlinkMode(2); } break; case 2: //Blinkmode 2 is active while the Teensy is waiting for more commands if(BlinkTimer<1500) { digitalWrite(LedPin,0); } else if(BlinkTimer<1600) { digitalWrite(LedPin,1); } else if(BlinkTimer<1700) { digitalWrite(LedPin,0); } else if(BlinkTimer<1800) { digitalWrite(LedPin,1); }else { BlinkTimer=0; digitalWrite(LedPin,0); } default: //This should never be active //The code is only here to make it easier to determine if a wrong Blinkcode has been set if(BlinkTimer>2000) { BlinkTimer=0; digitalWrite(LedPin,!digitalRead(LedPin)); } break; } }
//Outputs the data in the ram to the ledstriptrips void OutputData() { FastLED.show(); Ack(); }
//Fills the given area of a ledstriptrip with a color void Fill() { word firstLed=ReceiveWord(); word numberOfLeds=ReceiveWord(); int ColorData=ReceiveColorData();
if( firstLed<=NombreLeds && numberOfLeds>0 && firstLed+numberOfLeds-1<=NombreLeds ) { word endLedNr=firstLed+numberOfLeds; for(word ledNr=firstLed; ledNr<endLedNr; ledNr++) { LedSetPixel(ledNr, (ColorData & 0xFF), ((ColorData >> 8)& 0xFF), ((ColorData >> 16)& 0xFF)); } Ack(); } else { //Number of the first led or the number of ledstrip to receive is outside the allowed range Nack(); } }
//Receives data for the ledstriptrips void ReceiveData() { word firstLed=ReceiveWord(); word numberOfLeds=ReceiveWord(); int ColorData=ReceiveColorData(); if( firstLed<=NombreLeds && numberOfLeds>0 && firstLed+numberOfLeds-1<=NombreLeds ) { //FirstLedNr and numberOfLeds are valid. //Receive and set color data
word endLedNr=firstLed+numberOfLeds; int i=0; for(word ledNr=firstLed; ledNr<endLedNr; ledNr++) { i++; LedSetPixel(ledNr,(ColorData & 0xFF), ((ColorData >> 8)& 0xFF), ((ColorData >> 16)& 0xFF)); } Ack();
} else { //Number of the first led or the number of ledstrip to receive is outside the allowed range Nack(); } }
//Clears the data for all configured ledstrip void ClearAllLedData() { for(int ledNr=0; ledNr<NombreLeds; ledNr++) { leds[ledNr]=CRGB::Black; } Ack(); }
//Sends the firmware version void SendVersion() { Serial.write(FirmwareVersionMajor); Serial.write(FirmwareVersionMinor); Ack(); }
//Sends the max number of ledstrip per strip void SendMaxNumberOfLeds() { byte B=NombreLeds>>8; Serial.write(B); B=NombreLeds&255; Serial.write(B); Ack(); }
//Sends a ack (A) void Ack() { Serial.write('A'); }
//Sends a NACK (N) void Nack() { Serial.write('N'); }
//Receives 3 bytes of color data. int ReceiveColorData() { while(!Serial.available()) {}; int colorValue=Serial.read(); while(!Serial.available()) {}; colorValue=(colorValue<<8)|Serial.read(); while(!Serial.available()) {}; colorValue=(colorValue<<8)|Serial.read(); return colorValue; }
//Receives a word value. High byte first, low byte second word ReceiveWord() { while(!Serial.available()) {}; word wordValue=Serial.read()<<8; while(!Serial.available()) {}; wordValue=wordValue|Serial.read(); return wordValue; } on voit que le DOF attend un Ack mais ne le reçoit pas donc ça s'arrête là. Reste à savoir si ça vient de l'ino ou du DOF | |
| | | kakou
Messages : 558 Département : 18
| Sujet: Re: [TUTO] Pilotage de Ledstrip adressable style "Teensy" via WEMOS D1 PRO Dim 21 Mai 2017 - 15:07 | |
| a mon avis ca vient de la, DOF envoi la taille, et il attend un A de l'arudino, mais elle envoi rien comme tu as commenté le code. Faut bien faire attention a ce que la communication soit synchrone (DOF envoi un truc, que l'arduino doit lire, meme si tu t'en sers pas et l'arduino doit repondre) : case 'L': // ne sert à rien, la longueur du LedStrip est géré directement dans le code ino //Set length of strips //SetLedStripLength(); break; | |
| | | Aetios Modérateur + Team PP
Messages : 1665 Département : 50
| Sujet: Re: [TUTO] Pilotage de Ledstrip adressable style "Teensy" via WEMOS D1 PRO Dim 21 Mai 2017 - 15:15 | |
| oui j'ai corrigé, j'ai mis ça - Code:
-
case 'L': // ne sert à rien, la longueur du LedStrip est géré directement dans le code ino //Set length of strips //SetLedStripLength(); Ack(); break; mais du coup maintenant j'ai ça : - Code:
-
2017.05.21 15:02:28.266 EXCEPTION: TeensyStripController LedStripController updater thread could not connect to the controller. Thread will quit. 2017.05.21 15:02:28.266 EXCEPTION: Thread: TeensyStripController LedStripController updater thread 2017.05.21 15:02:28.267 EXCEPTION: Message: Exception --> Expected a Ack (A) after clearing the buffer of the TeensyStripController, but received no answer or a unexpected answer. Will not send data to the controller. 2017.05.21 15:02:28.660 EXCEPTION: Stacktrace: à DirectOutput.Cab.Out.AdressableLedStrip.TeensyStripController.ConnectToController() dans C:\Users\arcade\Desktop\DirectOutput-3f16f7ef06b928429aa1bb3a9c3f4a17bc8a50e0\DirectOutput\Cab\Out\AdressableLedStrip\TeensyStripController.cs:ligne 612 2017.05.21 15:02:28.661 EXCEPTION: Stacktrace: à DirectOutput.Cab.Out.OutputControllerCompleteBase.UpdaterThreadDoIt() dans C:\Users\arcade\Desktop\DirectOutput-3f16f7ef06b928429aa1bb3a9c3f4a17bc8a50e0\DirectOutput\Cab\Out\OutputControllerCompleteBase.cs:ligne 333 2017.05.21 15:02:28.673 EXCEPTION: Targetsite: Void ConnectToController() Alors là, tout dépend ce que DOF appelle "clearing the buffer of the TeensyStripController". Parce que dans ma fonction ClearAllLedData(), j'ai bien mis le Ack() | |
| | | kakou
Messages : 558 Département : 18
| Sujet: Re: [TUTO] Pilotage de Ledstrip adressable style "Teensy" via WEMOS D1 PRO Dim 21 Mai 2017 - 15:21 | |
| tu as mis un ack(), mais t'on arduino a pas lu la valeur de taille ledstrip que DOF lui a envoyé, du coup la communication est désynchronisée | |
| | | Aetios Modérateur + Team PP
Messages : 1665 Département : 50
| Sujet: Re: [TUTO] Pilotage de Ledstrip adressable style "Teensy" via WEMOS D1 PRO Dim 21 Mai 2017 - 15:52 | |
| [Vous devez être inscrit et connecté pour voir ce lien] : on avance, j'ai remis la fonction SetLedStripLength() et du coup ça communique : - Code:
-
2017.05.21 15:49:08.972 TeensyStripController LedStripController updater thread has connected to TeensyStripController LedStripController. 2017.05.21 15:49:09.007 Debug: CommandData (O,firstled,firstled,NBLeds,NBLeds): new byte[] { 82, 0, 0, 0, 106 } 2017.05.21 15:49:09.007 Debug: OutputValues (size) (Color, 3 bytes per color): 106 new byte[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } 2017.05.21 15:49:09.213 EXCEPTION: TeensyStripController LedStripController updater thread could not send update for TeensyStripController LedStripController: Received no answer or a unexpected answer while waiting for the ACK after sending the output command (O) to the TeensyStripController. Will try again. 2017.05.21 15:49:09.214 EXCEPTION: Thread: TeensyStripController LedStripController updater thread 2017.05.21 15:49:09.214 EXCEPTION: Message: Exception --> Received no answer or a unexpected answer while waiting for the ACK after sending the output command (O) to the TeensyStripController 2017.05.21 15:49:09.218 EXCEPTION: Stacktrace: à DirectOutput.Cab.Out.AdressableLedStrip.TeensyStripController.UpdateOutputs(Byte[] OutputValues) dans C:\Users\arcade\Desktop\DirectOutput-3f16f7ef06b928429aa1bb3a9c3f4a17bc8a50e0\DirectOutput\Cab\Out\AdressableLedStrip\TeensyStripController.cs:ligne 335 2017.05.21 15:49:09.218 EXCEPTION: Stacktrace: à DirectOutput.Cab.Out.OutputControllerCompleteBase.UpdaterThreadDoIt() dans C:\Users\arcade\Desktop\DirectOutput-3f16f7ef06b928429aa1bb3a9c3f4a17bc8a50e0\DirectOutput\Cab\Out\OutputControllerCompleteBase.cs:ligne 365 2017.05.21 15:49:09.218 EXCEPTION: Targetsite: Void UpdateOutputs(Byte[]) 2017.05.21 15:49:09.218 Warning: TeensyStripController LedStripController updater thread tries to reconnect to TeensyStripController LedStripController. 2017.05.21 15:49:09.218 Debug: Close Port 2017.05.21 15:49:09.354 Debug: Open Port 2017.05.21 15:49:14.747 TeensyStripController LedStripController updater thread has reconnected to TeensyStripController LedStripController. 2017.05.21 15:49:14.848 Debug: CommandData (O,firstled,firstled,NBLeds,NBLeds): new byte[] { 82, 0, 0, 0, 106 } 2017.05.21 15:49:14.848 Debug: OutputValues (size) (Color, 3 bytes per color): 106 new byte[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } 2017.05.21 15:49:15.054 EXCEPTION: TeensyStripController LedStripController updater thread could still not send update for TeensyStripController LedStripController: Received no answer or a unexpected answer while waiting for the ACK after sending the output command (O) to the TeensyStripController. Thread will quit. 2017.05.21 15:49:15.054 EXCEPTION: Thread: TeensyStripController LedStripController updater thread 2017.05.21 15:49:15.054 EXCEPTION: Message: Exception --> Received no answer or a unexpected answer while waiting for the ACK after sending the output command (O) to the TeensyStripController 2017.05.21 15:49:15.054 EXCEPTION: Stacktrace: à DirectOutput.Cab.Out.AdressableLedStrip.TeensyStripController.UpdateOutputs(Byte[] OutputValues) dans C:\Users\arcade\Desktop\DirectOutput-3f16f7ef06b928429aa1bb3a9c3f4a17bc8a50e0\DirectOutput\Cab\Out\AdressableLedStrip\TeensyStripController.cs:ligne 335 2017.05.21 15:49:15.054 EXCEPTION: Stacktrace: à DirectOutput.Cab.Out.OutputControllerCompleteBase.UpdaterThreadDoIt() dans C:\Users\arcade\Desktop\DirectOutput-3f16f7ef06b928429aa1bb3a9c3f4a17bc8a50e0\DirectOutput\Cab\Out\OutputControllerCompleteBase.cs:ligne 404 2017.05.21 15:49:15.054 EXCEPTION: Targetsite: Void UpdateOutputs(Byte[]) 2017.05.21 15:49:15.054 Debug: Close Port J'ai essayé ton code sans trop de modif et ça bloque presque de la même façon : - Code:
-
2017.05.21 17:03:34.127 TeensyStripController LedStripController updater thread has connected to TeensyStripController LedStripController. 2017.05.21 17:03:34.136 Debug: CommandData (O,firstled,firstled,NBLeds,NBLeds): new byte[] { 82, 0, 0, 0, 106 } 2017.05.21 17:03:34.137 Debug: OutputValues (size) (Color, 3 bytes per color): 106 new byte[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } 2017.05.21 17:03:34.573 EXCEPTION: TeensyStripController LedStripController updater thread could not send update for TeensyStripController LedStripController: A exception occured while waiting for the ACK after sending the data for channel 1 of the TeensyStripController.. Will try again. 2017.05.21 17:03:34.573 EXCEPTION: Thread: TeensyStripController LedStripController updater thread 2017.05.21 17:03:34.573 EXCEPTION: Message: Exception --> A exception occured while waiting for the ACK after sending the data for channel 1 of the TeensyStripController. 2017.05.21 17:03:34.826 EXCEPTION: Stacktrace: à DirectOutput.Cab.Out.AdressableLedStrip.TeensyStripController.UpdateOutputs(Byte[] OutputValues) dans C:\Users\arcade\Desktop\DirectOutput-3f16f7ef06b928429aa1bb3a9c3f4a17bc8a50e0\DirectOutput\Cab\Out\AdressableLedStrip\TeensyStripController.cs:ligne 309 2017.05.21 17:03:34.853 EXCEPTION: Stacktrace: à DirectOutput.Cab.Out.OutputControllerCompleteBase.UpdaterThreadDoIt() dans C:\Users\arcade\Desktop\DirectOutput-3f16f7ef06b928429aa1bb3a9c3f4a17bc8a50e0\DirectOutput\Cab\Out\OutputControllerCompleteBase.cs:ligne 365 2017.05.21 17:03:34.966 EXCEPTION: Targetsite: Void UpdateOutputs(Byte[]) 2017.05.21 17:03:35.048 EXCEPTION: InnerException 1: TimeoutException --> Le délai d'attente de l'opération a expiré. 2017.05.21 17:03:35.048 Warning: TeensyStripController LedStripController updater thread tries to reconnect to TeensyStripController LedStripController. 2017.05.21 17:03:35.048 Debug: Close Port 2017.05.21 17:03:35.155 Debug: Open Port 2017.05.21 17:03:44.480 EXCEPTION: Could not put the controller on com-port COM4 into the commandmode. Will not send data to the controller. 2017.05.21 17:03:44.480 EXCEPTION: Thread: TeensyStripController LedStripController updater thread 2017.05.21 17:03:44.480 Debug: Close Port 2017.05.21 17:03:44.487 TeensyStripController LedStripController updater thread has reconnected to TeensyStripController LedStripController. 2017.05.21 17:03:44.594 EXCEPTION: TeensyStripController LedStripController updater thread could still not send update for TeensyStripController LedStripController: Comport is not initialized. Thread will quit. 2017.05.21 17:03:44.594 EXCEPTION: Thread: TeensyStripController LedStripController updater thread 2017.05.21 17:03:44.595 EXCEPTION: Message: Exception --> Comport is not initialized 2017.05.21 17:03:44.595 EXCEPTION: Stacktrace: à DirectOutput.Cab.Out.AdressableLedStrip.TeensyStripController.UpdateOutputs(Byte[] OutputValues) dans C:\Users\arcade\Desktop\DirectOutput-3f16f7ef06b928429aa1bb3a9c3f4a17bc8a50e0\DirectOutput\Cab\Out\AdressableLedStrip\TeensyStripController.cs:ligne 279 2017.05.21 17:03:44.595 EXCEPTION: Stacktrace: à DirectOutput.Cab.Out.OutputControllerCompleteBase.UpdaterThreadDoIt() dans C:\Users\arcade\Desktop\DirectOutput-3f16f7ef06b928429aa1bb3a9c3f4a17bc8a50e0\DirectOutput\Cab\Out\OutputControllerCompleteBase.cs:ligne 404 2017.05.21 17:03:44.595 EXCEPTION: Targetsite: Void UpdateOutputs(Byte[]) 2017.05.21 17:04:47.716 Finishing framework Par contre toujours pas d'effet sur les ledstrips. Bizarrement il semble bloqué sur l'envoi de Outputdata() qui ne fait rien d'autre que de lancer FastLedShow(). Toujours un problème de désynchronistaion selon toi ? t'as moyen de tester mon code de ton côté ? - Code:
-
/******************************************************************************************************** ** Arduino Ledstrip Controller ********************************************************************************************************/ #define SERIAL_BUFFER_SIZE 1024 // Définie la taille du Buffer du port Série #include <elapsedMillis.h> // Appel de la librairie permettant de gérer le clignotement d'une LED de contrôle #include <FastLED.h> //#include "LedStrip.h" // Appel du fichier LedStrip.h joint au présnet code ino. #include <string.h>
//Definiton of Major and Minor part of the firmware version. This value can be received using the V command. //If something is changed in the code the number should be increased. #define FirmwareVersionMajor 1 #define FirmwareVersionMinor 1
//Defines the max number of ledstrip which is allowed per ledstriptrip. //This number is fine for Teensy 3.2, 3.1. For newer Teensy versions (they dont exists yet) it might be possible to increase this number. #define NombreLeds 106
//Defines the Pinnumber to which the built in led of the Teensy is connected. //For Teensy 3.2, 3.1 this is pin 13, if you use a newer Teensy version (not available at the time of writing) you might need to change this number. #define LedPin 10 // 10 #define DATA_PIN1 2 // ledstrip gauche #define DATA_PIN2 3 // lestrip droit #define BRIGHTNESS 150 #define LED_TYPE WS2812B #define COLOR_ORDER GRB
//Variable used to control the blinking and flickering of the led of the Teensy elapsedMillis BlinkTimer; int BlinkMode; elapsedMillis BlinkModeTimeoutTimer;
#define UPDATES_PER_SECOND 100
CRGBArray<NombreLeds> leds;
//LedStrip ledstrip(NombreLeds,leds); word configuredStripLength=53; // Nombre de leds par strip
//Setup of the system. Is called once on startup. void setup() { Serial.begin(9600); while(Serial.available()) {Serial.read();}; delay(100); Serial.println("");
//Initialize the lib for the ledstrip FastLED.addLeds<LED_TYPE, DATA_PIN1, COLOR_ORDER>(leds, NombreLeds/2).setCorrection( TypicalLEDStrip ); FastLED.addLeds<LED_TYPE, DATA_PIN2, COLOR_ORDER>(leds, NombreLeds/2, NombreLeds/2).setCorrection( TypicalLEDStrip ); FastLED.setBrightness( BRIGHTNESS ); //Initialize the led pin pinMode(LedPin,OUTPUT);
SetBlinkMode(0); for(int ledNr=0; ledNr<NombreLeds; ledNr++) { LedSetPixel(ledNr, 255, 0, 0); } FastLED.show(); delay(1000);
ClearAllLedData(); FastLED.show(); delay(1000);
for(int ledNr=0; ledNr<NombreLeds; ledNr++) { LedSetPixel(ledNr, 0, 255, 0); } FastLED.show(); delay(1000);
ClearAllLedData(); FastLED.show(); delay(1000); for(int ledNr=0; ledNr<NombreLeds; ledNr++) { LedSetPixel(ledNr, 0, 0, 255); } FastLED.show(); delay(1000);
ClearAllLedData(); FastLED.show(); delay(1000); }
static byte receivedByte;
//Main loop of the programm gets called again and again. void loop() { /* static uint8_t hue; for(int i = 0; i < NombreLeds/2; i++) { // fade everything out leds.fadeToBlackBy(40);
// let's set an led value leds[i] = CHSV(hue++,255,255);
// now, let's first 20 leds to the top 20 leds, leds(NombreLeds/2,NombreLeds-1) = leds(NombreLeds/2 - 1 ,0); FastLED.delay(33); }*/ //ArduinoOTA.handle(); //Check if data is available if (Serial.available() > 0) { receivedByte = Serial.read(); /* #ifdef DEBUG_ON_WIFI wifidebug.tcp_receive_debug(receivedByte); #endif */ switch (receivedByte) { case 'L': // ne sert à rien, la longueur du LedStrip est géré directement dans le code ino //Set length of strips SetLedStripLength(); break; case 'F': //Fill strip area with color Fill(); break; case 'R': //receive data for strips ReceiveData(); break; case 'O': //output data on strip OutputData(); break; case 'C': //Clears all previously received led data ClearAllLedData(); break; case 'V': //Send the firmware version SendVersion(); break; case 'M': // ne sert à rien non plus //Get max number of ledstrip per strip SendMaxNumberOfLeds(); break; default: // no unknown commands allowed. Send NACK (N) Nack(); break; } SetBlinkMode(1); } Blink(); }
void LedSetPixel(uint32_t num, int red, int green, int blue) { leds[num].b=(blue & 0xFF); // Take just the lowest 8 bits. leds[num].g=(green & 0xFF); // Shift the integer right 8 bits. leds[num].r=(red & 0xFF); // Shift the integer right 8 bits. }
//Sets the mode for the blinking of the led void SetBlinkMode(int Mode) { BlinkMode=Mode; BlinkModeTimeoutTimer=0; }
//Controls the blinking of the led void Blink() { switch(BlinkMode) { case 0: //Blinkmode 0 is only active after the start of the Teensy until the first command is received. if(BlinkTimer<1500) { digitalWrite(LedPin,0); } else if(BlinkTimer<1600) { digitalWrite(LedPin,1); } else { BlinkTimer=0; digitalWrite(LedPin,0); } break; case 1: //Blinkmode 1 is activated when the Teensy receives a command //Mode expires 500ms after the last command has been received resp. mode has been set if(BlinkTimer>30) { BlinkTimer=0; digitalWrite(LedPin,!digitalRead(LedPin)); } if(BlinkModeTimeoutTimer>500) { SetBlinkMode(2); } break; case 2: //Blinkmode 2 is active while the Teensy is waiting for more commands if(BlinkTimer<1500) { digitalWrite(LedPin,0); } else if(BlinkTimer<1600) { digitalWrite(LedPin,1); } else if(BlinkTimer<1700) { digitalWrite(LedPin,0); } else if(BlinkTimer<1800) { digitalWrite(LedPin,1); }else { BlinkTimer=0; digitalWrite(LedPin,0); } default: //This should never be active //The code is only here to make it easier to determine if a wrong Blinkcode has been set if(BlinkTimer>2000) { BlinkTimer=0; digitalWrite(LedPin,!digitalRead(LedPin)); } break; } }
//Outputs the data in the ram to the ledstriptrips void OutputData() { FastLED.show(); Ack(); }
//Fills the given area of a ledstriptrip with a color void Fill() { word firstLed=ReceiveWord(); word numberOfLeds=ReceiveWord(); int ColorData=ReceiveColorData();
if( firstLed<=NombreLeds && numberOfLeds>0 && firstLed+numberOfLeds-1<=NombreLeds ) { word endLedNr=firstLed+numberOfLeds; for(word ledNr=firstLed; ledNr<endLedNr; ledNr++) { LedSetPixel(ledNr, (ColorData & 0xFF), ((ColorData >> 8)& 0xFF), ((ColorData >> 16)& 0xFF)); } Ack(); } else { //Number of the first led or the number of ledstrip to receive is outside the allowed range Nack(); } }
//Receives data for the ledstriptrips void ReceiveData() { word firstLed=ReceiveWord(); word numberOfLeds=ReceiveWord(); int ColorData=ReceiveColorData(); if( firstLed<=NombreLeds && numberOfLeds>0 && firstLed+numberOfLeds-1<=NombreLeds ) { //FirstLedNr and numberOfLeds are valid. //Receive and set color data
word endLedNr=firstLed+numberOfLeds; int i=0; for(word ledNr=firstLed; ledNr<endLedNr; ledNr++) { i++; LedSetPixel(ledNr,(ColorData & 0xFF), ((ColorData >> 8)& 0xFF), ((ColorData >> 16)& 0xFF)); } Ack();
} else { //Number of the first led or the number of ledstrip to receive is outside the allowed range Nack(); } }
void SetLedStripLength() { word stripLength=ReceiveWord(); if(stripLength<1 || stripLength>NombreLeds) { //stripLength is either to small or above the max number of ledstrip allowed Nack(); } else { //stripLength is in the valid range configuredStripLength=stripLength; //ledstrip.setStripLength(stripLength); //ledstrip.begin(); //Reinitialize the OctoWS2811 lib (not sure if this is needed) Ack(); } } //Clears the data for all configured ledstrip void ClearAllLedData() { for(int ledNr=0; ledNr<NombreLeds; ledNr++) { leds[ledNr]=CRGB::Black; } Ack(); }
//Sends the firmware version void SendVersion() { Serial.write(FirmwareVersionMajor); Serial.write(FirmwareVersionMinor); Ack(); }
//Sends the max number of ledstrip per strip void SendMaxNumberOfLeds() { byte B=NombreLeds>>8; Serial.write(B); B=NombreLeds&255; Serial.write(B); Ack(); }
//Sends a ack (A) void Ack() { Serial.write('A'); }
//Sends a NACK (N) void Nack() { Serial.write('N'); }
//Receives 3 bytes of color data. int ReceiveColorData() { while(!Serial.available()) {}; int colorValue=Serial.read(); while(!Serial.available()) {}; colorValue=(colorValue<<8)|Serial.read(); while(!Serial.available()) {}; colorValue=(colorValue<<8)|Serial.read(); return colorValue; }
//Receives a word value. High byte first, low byte second word ReceiveWord() { while(!Serial.available()) {}; word wordValue=Serial.read()<<8; while(!Serial.available()) {}; wordValue=wordValue|Serial.read(); return wordValue; } | |
| | | manples
Messages : 267 Département : Texas
| Sujet: [INFO] Wemos D1 Jeu 22 Juin 2017 - 23:41 | |
| Oui j'en suis convaincu, ça doit claquer.
La lumière est justement au coeur des 3 toys qui me manquent: Pin2DMD, lightbar, RGB undercab.
Bientôt un tuto "Rayban ou Oakley pour VPX 10.4?" ;-) | |
| | | ced
Messages : 7015 Département : 14
| Sujet: Re: [TUTO] Pilotage de Ledstrip adressable style "Teensy" via WEMOS D1 PRO Ven 23 Juin 2017 - 0:52 | |
| | |
| | | kakou
Messages : 558 Département : 18
| Sujet: Re: [TUTO] Pilotage de Ledstrip adressable style "Teensy" via WEMOS D1 PRO Ven 23 Juin 2017 - 8:14 | |
| Oui ca change carrément de la lightbar. On a fait une version pas cher avec [Vous devez être inscrit et connecté pour voir ce lien] du controller avec une carte a 5€ au lieu de la teensy qui coute un max a importer. Regarde les videos à la fin de mon WIP si tu veux voir ce que ca donne. Moi ca m'a couté 2x17€ pour les ledstrip + 5€ la carte | |
| | | Aetios Modérateur + Team PP
Messages : 1665 Département : 50
| Sujet: Re: [TUTO] Pilotage de Ledstrip adressable style "Teensy" via WEMOS D1 PRO Ven 23 Juin 2017 - 8:19 | |
| Oui faut que je fasse le tuto d'ailleurs, pas trop le temps en ce moment. | |
| | | kakou
Messages : 558 Département : 18
| Sujet: Re: [TUTO] Pilotage de Ledstrip adressable style "Teensy" via WEMOS D1 PRO Ven 23 Juin 2017 - 8:27 | |
| [Vous devez être inscrit et connecté pour voir ce lien], si quelqu'un veux tester ca fera une bonne motivation pour le faire | |
| | | ced
Messages : 7015 Département : 14
| Sujet: Re: [TUTO] Pilotage de Ledstrip adressable style "Teensy" via WEMOS D1 PRO Ven 23 Juin 2017 - 10:56 | |
| ça m'intéresse énormément ta solution kakou (il y a des infos sur ton wip je crois...) il faut que je commande le matos et c'est parti | |
| | | kakou
Messages : 558 Département : 18
| Sujet: Re: [TUTO] Pilotage de Ledstrip adressable style "Teensy" via WEMOS D1 PRO Ven 23 Juin 2017 - 10:59 | |
| [Vous devez être inscrit et connecté pour voir ce lien] super, ca fonctionne sans problème chez [Vous devez être inscrit et connecté pour voir ce lien] et moi. Prends bien une "wemos D1 mini pro" comme carte surtout, toutes les infos sont sur mon WIP pour l'instant, un tuto viendra par la suite | |
| | | ced
Messages : 7015 Département : 14
| Sujet: Re: [TUTO] Pilotage de Ledstrip adressable style "Teensy" via WEMOS D1 PRO Ven 23 Juin 2017 - 11:32 | |
| c'est cool , merci kakou tu l'as acheté sur aliexpress la carte ? | |
| | | peskopat Admin
Messages : 11964 Département : 54
| Sujet: Re: [TUTO] Pilotage de Ledstrip adressable style "Teensy" via WEMOS D1 PRO Ven 23 Juin 2017 - 12:30 | |
| Sur ebay même pas 5€ [Vous devez être inscrit et connecté pour voir ce lien] Lien Wemos j'en ai pris 2 . | |
| | | | [TUTO] Pilotage de Ledstrip adressable style "Teensy" via WEMOS D1 PRO | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |