WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

S-Funktion für Arduino wird erst nach Beenden ausgeführt

 

Rafael.B.
Forum-Newbie

Forum-Newbie


Beiträge: 1
Anmeldedatum: 10.06.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.06.2019, 13:21     Titel: S-Funktion für Arduino wird erst nach Beenden ausgeführt
  Antworten mit Zitat      
Hallo zusammen,

ich habe eine eigene Funktion gebastelt, die die Adafruit NeoPixel RGBW-LED Stripes ansteuern soll. Orientiert habe ich mich dabei an einem Beispiel, bei dem die Bibliotheken für einen LCD eingebunden und auf dem Arduino zum Laufen gebracht werden.

Die Funktion als solche Funktioniert auch. Ich kann 4 Werte vorgeben und die LED-Stripes damit ansteuern.

Problem ist nur, dass wenn ich auf "Run" drücke, das Modell beginnt und erst einmal nichts passiert. Ich möchte gerne, dass nach Start die LEDs die Farbe übernehmen und auch während der Laufzeit änderbar sind.

Bei mir fangen die LEDs erst nach beenden mit "stop" an Stück für Stück anzugehen in der davor eingestellten Farbe.

Woran liegt das? Bzw. was muss ich anpassen, damit es wie gewünscht funktioniert?
Code:


#if defined(MATLAB_MEX_FILE)
#include "tmwtypes.h"
#include "simstruc_types.h"
#else
#include "rtwtypes.h"
#endif

#include <math.h>
#ifndef MATLAB_MEX_FILE
#include "Adafruit_NeoPixel.h"
#include "Adafruit_NeoPixel.cpp"
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(50, 6, NEO_RGBW + NEO_KHZ800);

#endif

#define u_width 1


extern "C" void Adafruit_NeoPixel_Start_wrapper(real_T *xD)
{  
  #ifndef MATLAB_MEX_FILE
 
  pixels.begin();
 
  #endif
 
  xD[0] = 1;
}

extern "C" void Adafruit_NeoPixel_Outputs_wrapper(const int16_T *R,
         const int16_T *G,
         const int16_T *B,
         const int16_T *W,
         const real_T *xD)
{

if(xD[0] ==1)
{
 #ifndef MATLAB_MEX_FILE
   
    for(int i=0;i<50;i++){

    // pixels.Color takes RGB values, from 0,0,0 up to 255,255,255
    pixels.setPixelColor(i, pixels.Color(R[0],G[0],B[0], W[0]));

    pixels.show(); // This sends the updated pixel color to the hardware.

    delay(150);

    }
   
 #endif
}
}


extern "C" void Adafruit_NeoPixel_Update_wrapper(const int16_T *R,
         const int16_T *G,
         const int16_T *B,
         const int16_T *W,
         real_T *xD)
{
}

extern "C" void Adafruit_NeoPixel_Terminate_wrapper(real_T *xD)
{


if(xD[0] != 1)
{
   
  #ifndef MATLAB_MEX_FILE

  pixels.begin();
 
  #endif
 
  xD[0] = 1;
}
}



 


2019-06-10 14_22_59-NeoPixel_SFunction - Simulink academic use.png
 Beschreibung:

Download
 Dateiname:  2019-06-10 14_22_59-NeoPixel_SFunction - Simulink academic use.png
 Dateigröße:  6.91 KB
 Heruntergeladen:  283 mal
Private Nachricht senden Benutzer-Profile anzeigen


Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.