TauLabs/PicoC: Ansteuerung RGB LEDs WS2812

ernieift

Erfahrener Benutzer
Die entsprechenden Funktionen sind in der system.h
Code:
int i2c_read(unsigned char port , unsigned char slave , void * buffer, unsigned int bytes);
int i2c_write(unsigned char port , unsigned char slave , void * buffer, unsigned int bytes);
Der Neopixel-Transceiver verhält sich wie ein 24LC01 bei i2c. Du muss also als erstes die Adresse im Slave übertragen.
Beim Quanton geht es am internen (0), USART1 (1) und USART3 (2) Ports. Beim Brain weiss ich nicht aber es gibt ein Video, da hat jemand ein i2c Display mit picoC am Brain programmiert. Daher sollte es möglich sein.
Wenn die Funktionen negative Werte zurückgeben ist etwas verkehrt gelaufen.
 

odwquad

Erfahrener Benutzer
Ich hab da auch ein kleines Problemchen.
Ich möchte gerne an Output Kanal 8 ein ServoSignal mit PicoC ausgeben.
leider funktioniert das gar nicht. Meine WS2812 LEDs funktionieren einwandfrei im Programm.

Anbei mal ein Auszug aus meinem Programm: (Rot Markierte Zeile macht er nicht :(. Oder geht das mit diesem Befehl nicht? Möchte ein Signal von 2000us ausgeben. Wenn ich über den Mischer einen Kanal meiner Fernsteuerung auf Out9 gebe dann funktioniert das.

Code:
while(TestValGet() > 0)
{
FlightBatteryStateGet(&BatteryData);
if (BatteryData.Voltage < 10.4)
    {
      PosLEDs();
      clearLED();
      delay(500);
      sendLED();
      delay(500);
      clearLED();
      delay(500);
      sendLED();
      delay(500);
      clearLED();
    }

//Schalterstatus = AccessoryValGet(1);

	if (armed() && (TMPArmed != 1))
	{	
              [COLOR="#FF0000"]PWMOutSet(9,2000);[/COLOR]
		PosLEDs();
		TMPArmed = 1;
		LEDupdate=1;
 	} 
	else if (!armed() && (TMPArmed != 0))
	{
              PWMOutSet(9,1000);
              clearLED();
		TMPArmed = 0;
		LEDupdate=1;
	}

	if (LEDupdate == 1) 
	{
		sendLED();
		LEDupdate = 0;
	}

	sync(500);
}
(Randinfo: Am OutKanal 9 meiner Quanton hängt ein Anttiny, der die Blitzlicher steuert. Ab einem Signal von >1600us Schaltet er die Blitzlicher ein. Via Fernsteuerung direkt das Signal auf Out9 geben funktioniert einwandfrei).
 

ernieift

Erfahrener Benutzer
Wenn Du Out9 benutzen willst, musst Du PWMOutSet(8,x); schreiben. Die Kanäle werden ab Null gezählt. Wichtig ist auch, dass der Mixer8Type auf "Disabled" steht und der Channeltype PWM ist. Daran erkennt picoC einen freien PWM-Output. Sonst ist es besser die Finger vom entsprechenden Kanal zu lassen ;).
 

odwquad

Erfahrener Benutzer
Ah cool danke ernieift das probiere ich gleich mal aus :)
 
Sparky2

Hallo Piloten,

DAS ist interessant und ich habe einige Fragen...

Ich schwebe nun seit 3 Monaten und das bisher mit Naze32, da ist das simple über CF, simple und eingeschränkt. Da ich nun dringend einige GPS features wie RTH und PH brauche, habe ich nun den Sparky2 bestellt.
In der Vorfreude beschäftige ich mich nun weiter mit dem Produkt und sehe, dass ich scheinbar etwas zu PicoC lernen darf um die WS2812 zu steuern. Ist das richtig, oder gibt es einen GUI Weg dafür? Ich hoffe übrigens, dass die FC Konfiguration über eine GUI geht...

Falls PicoC, könnt Ihr mir beim Start etwas helfen?

In eurem Thread sehe ich, dass ich einen ATTiny85 und die LED's brauche. Zudem noch einen angepassten Code.

Mir schweben GPS-, Batteriestatus, Positions und Blitzlichter vor. Einigen Code sehe ich hier im Thread den ich probieren werde. Ich habe verstanden, dass ich den Code auf den Sparky2 lade, den ATTiny85 verlöte und anschließe, dann den Script starte.

Mir fallen spontan einige Fragen ein:
An welchem PIN des Sparky2 greife ich das Signal ab? Kann ich die Lichter über die Taranis an bzw. ausschalten? Sollte man diese über ein BEC versorgen oder direkt über den FC?

Wie gesagt, ich möchte dies einigermaßen vorbereiten. Der Sparky2 kommt erst nächste Woche, da habe ich noch Zeit den ATTiny und eventuell weitere Bauteile zu besorgen.

Da bedanke ich mich mal im Vorfeld und freue mich bereits, meine weiteren Fragen/Probleme bei euch zu platzieren.

Beste Grüße aus Frankfurt

Oliver
 

odwquad

Erfahrener Benutzer
Hallo Piloten,

DAS ist interessant und ich habe einige Fragen...

Ich schwebe nun seit 3 Monaten und das bisher mit Naze32, da ist das simple über CF, simple und eingeschränkt. Da ich nun dringend einige GPS features wie RTH und PH brauche, habe ich nun den Sparky2 bestellt.
In der Vorfreude beschäftige ich mich nun weiter mit dem Produkt und sehe, dass ich scheinbar etwas zu PicoC lernen darf um die WS2812 zu steuern. Ist das richtig, oder gibt es einen GUI Weg dafür? Ich hoffe übrigens, dass die FC Konfiguration über eine GUI geht...

Falls PicoC, könnt Ihr mir beim Start etwas helfen?

In eurem Thread sehe ich, dass ich einen ATTiny85 und die LED's brauche. Zudem noch einen angepassten Code.

Mir schweben GPS-, Batteriestatus, Positions und Blitzlichter vor. Einigen Code sehe ich hier im Thread den ich probieren werde. Ich habe verstanden, dass ich den Code auf den Sparky2 lade, den ATTiny85 verlöte und anschließe, dann den Script starte.

Mir fallen spontan einige Fragen ein:
An welchem PIN des Sparky2 greife ich das Signal ab? Kann ich die Lichter über die Taranis an bzw. ausschalten? Sollte man diese über ein BEC versorgen oder direkt über den FC?

Wie gesagt, ich möchte dies einigermaßen vorbereiten. Der Sparky2 kommt erst nächste Woche, da habe ich noch Zeit den ATTiny und eventuell weitere Bauteile zu besorgen.

Da bedanke ich mich mal im Vorfeld und freue mich bereits, meine weiteren Fragen/Probleme bei euch zu platzieren.

Beste Grüße aus Frankfurt

Oliver
Hallo oliver. Du kannst den attiny an den main oder flexiport stecken /löten.

Ich würde die leds direkt an bec hängen. Aber es kommt natürlich auch auf die Anzahl der leds bzw deren Strombedarf an.

Über picoc kannst du die servoeingänge überwachen. Daher könntest du das so programmieren dass die leds an Kanal x bei dem wert y eingeschalten werden und bei wert z zb. Zu blinken anfangen.

Das ist alles frei programmierbar.
In der taulabs gcs gibt es ein Feld wo du dein pico c Programm eintippen/reinkopieren und dann auf das sparky laden kannst.

Am besten auch mal das taulabs wiki hierzu durchschauen und dir schonmal die aktuelle gcs herunterladen und anschauen.
 

odwquad

Erfahrener Benutzer
Genau. Musst ihn natürlich vorher erst flashen. Bei mir hat das wunderbar geklappt.
 
okay, also nehme ich z.B. CoolTerm und flashe dann NeoPixel_Transceiver.cpp.hex auf den attiny. Oder arbeite ich mit den Adafruit_NeoPixel-master Dateien?

Könntest du mir das bitte noch mal Schrittweise erklären?

Oliver
 

odwquad

Erfahrener Benutzer
Ohh glaube du hast gar keine Vorkenntnisse von microcontroller flashen oder?

Du benötigst dafür noch zusätzliche Hardware und eine Software. Zb arduino oder atmelstudio oder so.

Eine genaue Anleitung kann ich dir morgen mal schreiben.

Aber du kannst auch mal google bedienen. Such mal nach attiny flashen.
 

odwquad

Erfahrener Benutzer
soo. also
zu aller erst brauchst du folgende Dinge:


Version A: Flashen mit Arduino:
Schritt 1: Arduino Software installieren, nötige Bibliotheken installieren und den Arduino als ISP Programmer programmieren. Hierzu einfach das ArduinoISP Beispiel öffnen und auf den Arduino spielen.
Schritt 2: eine Adapterplatine basteln um den Attiny einfach ohne Lötarbeiten Programmieren zu können.
anbei ein Bild wie es bei mir ausgesehen hatte:
20141230_130258.jpg

Schritt 3: Den Attiny bzw. dessen Adapterplatine mit dem Arduino verbinden. Beschaltung kann je nach Arduino etwas anders sein. Wichtig ist, dass die Pins wie unten im Bild (roter Schrift) mit den entsprechenden Arduino Pins Verbunden sind. Zwischen GND und Reset des Arduinos muss noch ein 10 uF Elko eingesetzt werden.
ATtiny45-85.png
(Eine detailierte Anleitung zum flashen findest du hier)

Version B: Flashen mit AVR-USB Programmer: (Weniger Fehleranfällig aber schwieriger)
Schritt 1: Atmel AVR Studio installieren
Schritt 2: wieder so eine Adapterplatine basteln.
20141230_130258.jpg
Schritt 3: Attiny mit den entsprechenden Pins des AVR USB Programmers verbinden.
ATtiny45-85.png
Schritt 4: Im Atmel AVR Studio "Tools / Device Programming" auswählen
Schritt 5: Im Idealfall sollte Atmel den Attiny erkennen. Dann unter "Memories" - "Flash" das Hex file auf dem PC suchen und auswählen.
Schritt 6: Danach auf "Programm" klicken
Schritt 7: GGf. Müssen nun noch die Fuses angepasst werden. (War bei mir nicht der Fall. Bitte ggf. danach googeln!)

So als nächstes kommt die Verbindung zu den LEDs dran:
Schritt C: geflashter Attiny vom Adapterboard nehmen, und wie folgt verlöten: (VCC natürlich auch an den Attiny).
ATtiny45-851.png
Schritt D: nicht benötigte Pins abknipsen und alles in Schrumpfschlauch packen. Danach anschließen. Dann sollte das ca. wie folgt ausschauen:
Cinetank-Beleuchtung1 (11).jpg
Cinetank-Beleuchtung1 (13).jpg

Schritt E: In Taulabs das entsprechende Script zur Ansteuerung hochladen.


Hier findest du noch eine Anleitung zu PicoC


Viel Spass :D
(Hoffe ich habe nichts vergessen oder falsch erklärt. Falls doch, dann dürft ihr mich gerne korrigieren bzw. ergänzen.
 
Zuletzt bearbeitet:
Wow! Danke Piloten!!!

Das sieht nach einer Anleitung aus. Das werde ich machen.

Was mir noch auffällt: Wie testet bzw. ändert Ihr praktisch die Programmierung des ATTiny? Okay, zum testen werde ich nix fix verlöten, zum ändern nehme ich einen neuen ATTiny. Richtig?

Also, ich bestelle mir die Teile und arbeite diese Schritte ab, dann melde ich mich wieder. Das wird spätestens Ende der Woche soweit sein.

Danke!!!

Oliver
 

ernieift

Erfahrener Benutzer
Falsch verstanden. Die Programmierung im Tiny ist fest. Es ist nur ein Protokollübersetzer. Das PicoC-skipt ist die eigentliche Programmierung und frei änderbar.
 
Hi Piloten,

Okay, Arduino, ATTiny, etc,.. habe ich nun bekommen und die Teile lächeln mich an, ABER, Sparky2, GPS und TauLabs machen mir doch ziemliche zu schaffen daher brauche ich noch ein paar Tage bevor ich mich mit den "Lichtern" beschäftigen will.

Ich hoffe in ein paar Tagen macht die FC was ich mir vorstelle...

Beste Grüße

Oliver
 
Hallo Piloten,

leider werde ich den Sparky2 nach nur 3 Tagen verkaufen und damit ist mein PicoC Projekt gestorben.

Hintergrund ist, dass die TauLabs Lösung leider nicht zu mir passt.

Ich möchte mich für eure Mühe bedanken und hoffe die Anleitung kann eventuell anderen helfen.

Oliver
 
FPV1

Banggood

Oben Unten