LED gehen nur an wenn mann mit Daumen über Kontankte fasst

    LED gehen nur an wenn mann mit Daumen über Kontankte fasst

    Ich habe mir WS2811 Gekauft und ein Arduino uno R3.
    Ich habe alles angeschlossen und es ging erstmal gut nach einer Weile fingen die LEDs an zu Flackern nach denn ich Kurz denn Strom weggenommen habe ging es wieder.
    Ich hatte also die Sache für Erledigt erklärt und das in denn Schrank gelegt. Naja jetzt habe ich es wieder raus geholt und zack gab es ärger.

    erstmal die LEDs gehen gar nicht erst an erste wenn ich auf denn ersten punkt zum Abschneiden mit meinen Daumen drücke geht es. Nach wenigen Sekunden aber flackert es aber so ist es nicht Benutzer. Ein Defekt kann ich ausschließen anderen Strips gehen auch nicht im gegenteil fasse ich da auf denn Kontakt zum Schneiden geht es gar nicht. Es geht nur auf denn Ersten der Erste Kontakt die Anderen am ersten Streifen gehen auch nicht.
    Gesteuert wird es über Jinx und ein Arduino R3. Mit Fast LED geht es ohne Probleme.

    Habe mal ein Video gemacht damit ihr seht was ich meine
    youtu.be/FXzoSgwUhV4
    Ähm, wo genau drückst du drauf? Auf so einen kleinen schwarzen WS2811 IC, oder eine LED?
    Betrifft das nur einen 3'er Block LEDs, oder alles, was dahinter sitzt?
    Auf jeden Fall nachlöten, denke ich. Da wird eine kalte Lötstelle sein, die Kontakt gibt, wenn du draufdrückst. Bei den LEDs könnte auch ein Bonddraht locker sein. Das hat aber nur Auswirkungen auf den 3er Block, denn es sind immer 3 LEDs in Reihe geschaltet.
    Bei einem losen Bonddraht hilft es nur, die LED zu tauschen. Da kann man eine von einem Reststück runterlöten und dann an Stelle der defekten auflöten. Dazu braucht man allerdings eine Lötstation mit einem spitzen, schlanken Lötkolben, gutes, möglichst dünnes Lötzinn, ein säurefreies Flussmittel oder einen Flux-Stift, gute Augen, eine ruhige Hand und gute Nerven ;)
    Für die Jüngeren: Led Zeppelin ist KEIN beleuchtetes Luftschiff! :D
    Hey ich drücke auf keinen IC oder auf keiner LED.
    Ich Drücke genau auf denn Punkt wo mann normalerweise durchschneiden kann oder wenn nötig zusammenlöten kann.
    Ich habe es Getestet es ist mittlerer der DATA PIN Sobald ich da mit mein Finder Anfasse geht alles es fängt aber nach einer Zeit an zu flackern.
    Es ist dann der Ganze Strip Betroffen ich selber würde ja auch ein Problem zwischen Software und Elegoo UNO R3 tippen. Denn sobald ich ein FastLED Sktech auf denn Arduino Lade dann sind alle Fehler weg. Das geht ohne Probleme. Das läuft Stundenlang

    Ein Widerstand am Anfang ich auch drinnen 110 OHM alles über 200 Ohm geht nicht. Kondensator mir 225μf ist auch drinne.

    Könnte es auch am Elegoo UNO R3 Liegen? Hier mal ein Link https://www.amazon.de/gp/product/B01EWOE0UU/ref=s9u_simh_gw_i1?ie=UTF8&pd_rd_i=B01EWOE0UU&pd_rd_r=5058a425-c3db-11e7-9237-eb11a6a0f382&pd_rd_w=m2aKm&pd_rd_wg=zTqNv&pf_rd_m=A3JWKAKR8XB7XF&pf_rd_s=&pf_rd_r=69N6JSBW46YPAJ0VY5EE&pf_rd_t=36701&pf_rd_p=c210947d-c955-4398-98aa-d1dc27e614f1&pf_rd_i=desktop

    Hier nochmal der Sketch der drauf ist

    Quellcode

    1. //##############################################################################
    2. //##############################################################################
    3. // #
    4. // Glediator to WS2812 pixel converter #
    5. // by R. Heller #
    6. // V 1.0 - 07.01.2014 #
    7. // wwww.SolderLab.de #
    8. // #
    9. // Receives serial data in Glediator protocol format @ 1 MBit/s #
    10. // and distributes it to a connectect chain of WS2812 pixels #
    11. // #
    12. // Adjust the correct DATA PIN and the correct NUMBER OF PIXELS you are using #
    13. // in the definitions section below before uploading this sketch to your #
    14. // Arduino device. #
    15. // #
    16. // Maxiumim number of supported pixeles is 512 !!! #
    17. // #
    18. // In the Glediator software set output mode to "Glediator_Protocol", #
    19. // color order to "GRB" and baud rate to "1000000" #
    20. // #
    21. //##############################################################################
    22. //##############################################################################
    23. //##############################################################################
    24. // #
    25. // Definitions --> Make changes ONLY HERE #
    26. // #
    27. // To find out the correct port, ddr and pin name when you just know the #
    28. // Arduino's digital pin number just google for "Arduino pin mapping". #
    29. // In the present example digital Pin 6 is used which corresponds to "PORTD", #
    30. // "DDRD" and "6", respectively. #
    31. // #
    32. //##############################################################################
    33. #define DATA_PORT PORTD
    34. #define DATA_DDR DDRD
    35. #define DATA_PIN 6
    36. #define NUMBER_OF_PIXELS 100
    37. //##############################################################################
    38. // #
    39. // Variables #
    40. // #
    41. //##############################################################################
    42. unsigned char display_buffer[NUMBER_OF_PIXELS * 3];
    43. static unsigned char *ptr;
    44. static unsigned int pos = 0;
    45. volatile unsigned char go = 0;
    46. //##############################################################################
    47. // #
    48. // Setup #
    49. // #
    50. //##############################################################################
    51. void setup()
    52. {
    53. // Set data pin as output
    54. DATA_DDR |= (1 << DATA_PIN);
    55. // Initialize UART
    56. UCSR0A |= (1<<U2X0);
    57. UCSR0B |= (1<<RXEN0) | (1<<TXEN0) | (1<<RXCIE0);
    58. UCSR0C |= (1<<UCSZ01) | (1<<UCSZ00) ;
    59. UBRR0H = 0;
    60. UBRR0L = 1; //Baud Rate 1 MBit (at F_CPU = 16MHz)
    61. ptr=display_buffer;
    62. //Enable global interrupts
    63. sei();
    64. }
    65. //##############################################################################
    66. // #
    67. // Main loop #
    68. // #
    69. //##############################################################################
    70. void loop()
    71. {
    72. if (go==1)
    73. {
    74. cli();
    75. ws2812_sendarray(display_buffer, NUMBER_OF_PIXELS * 3);
    76. sei();
    77. go=0;
    78. }
    79. }
    80. //##############################################################################
    81. // #
    82. // UART-Interrupt-Prozedur (called every time one byte is compeltely received) #
    83. // #
    84. //##############################################################################
    85. ISR(USART_RX_vect)
    86. {
    87. unsigned char b;
    88. b=UDR0;
    89. if (b == 1) {pos=0; ptr=display_buffer; return;}
    90. if (pos == (NUMBER_OF_PIXELS*3)) {} else {*ptr=b; ptr++; pos++;}
    91. if (pos == ((NUMBER_OF_PIXELS*3)-1)) {go=1;}
    92. }
    93. //##############################################################################
    94. // #
    95. // WS2812 output routine #
    96. // Extracted from a ligh weight WS2812 lib by Tim (cpldcpu@gmail.com) #
    97. // Found on wwww.microcontroller.net #
    98. // Requires F_CPU = 16MHz #
    99. // #
    100. //##############################################################################
    101. void ws2812_sendarray(uint8_t *data,uint16_t datlen)
    102. {
    103. uint8_t curbyte,ctr,masklo;
    104. uint8_t maskhi = _BV(DATA_PIN);
    105. masklo =~ maskhi & DATA_PORT;
    106. maskhi |= DATA_PORT;
    107. while (datlen--)
    108. {
    109. curbyte = *data++;
    110. asm volatile
    111. (
    112. " ldi %0,8 \n\t" // 0
    113. "loop%=:out %2, %3 \n\t" // 1
    114. "lsl %1 \n\t" // 2
    115. "dec %0 \n\t" // 3
    116. " rjmp .+0 \n\t" // 5
    117. " brcs .+2 \n\t" // 6l / 7h
    118. " out %2,%4 \n\t" // 7l / -
    119. " rjmp .+0 \n\t" // 9
    120. " nop \n\t" // 10
    121. " out %2,%4 \n\t" // 11
    122. " breq end%= \n\t" // 12 nt. 13 taken
    123. " rjmp .+0 \n\t" // 14
    124. " rjmp .+0 \n\t" // 16
    125. " rjmp .+0 \n\t" // 18
    126. " rjmp loop%= \n\t" // 20
    127. "end%=: \n\t"
    128. : "=&d" (ctr)
    129. : "r" (curbyte), "I" (_SFR_IO_ADDR(DATA_PORT)), "r" (maskhi), "r" (masklo)
    130. );
    131. }
    132. }
    133. //##############################################################################
    134. // #
    135. // End of program #
    136. // #
    137. //##############################################################################
    Jo Gemacht geht leider immer noch nicht.

    Mit gut glück gehts auch mal ohne das ich anfasse. Ich habe jetzt alles pins Getestet es ist der Data Pin. Drücke ich auf denn gehts ohne Probleme für ein Paar Sekunden.
    Es geht auch wie schon Gesagt nur am Ersten punkt zum Durchscheiden.

    Mit Fast LED gibts keine Probleme. Nur mit denn Glediator Sketch

    Im Bild sieht mann welchen ich Anfassen Muss (Rot Markiert) Geht auch nur auf denn Streifen am ersten Punkt. Die Anderen gehen alle nicht.
    Könnte ein Timingproblem sein, wenn es mit dem einen Sketch läuft und mit dem anderen nicht. Es wird nicht der Druck sein, sondern die kapazitive Belastung durch das Anfassen. Ohne sich mit einem Oszi beide Varianten der Datenpakete anzugucken und sich dann durch den Code zu wurschteln, wird es kaum gehen.
    Für die Jüngeren: Led Zeppelin ist KEIN beleuchtetes Luftschiff! :D
    Timing Problem ich habe zwar viel Plan von DMX aber die Digitalen LED Streifen sind Absolutes Neuland für mich.

    Wo Finde ich denn denn Timing Bereicht im Glediator Sketch?

    Habe mal denn Fast LED Sketch mit rein gepackt mit denn läuft es ohne Probleme.


    Quellcode

    1. ​#include "FastLED.h"
    2. #define NUM_LEDS 50
    3. // Data pin that led data will be written out over
    4. #define DATA_PIN 6
    5. CRGB leds[NUM_LEDS];// This is an array of leds. One item for each led in your strip.
    6. int bank_1_size = 10; //Number of LEDs in bank 1
    7. int bank_2_size = 10; //Number of LEDs in bank 2
    8. int c; //bank1 display
    9. int d; //bank2 display
    10. int offset = 25; //Number of LEDs between banks
    11. int bank2; //bank 2 start location
    12. void setup() {
    13. // sanity check delay - allows reprogramming if accidently blowing power w/leds
    14. delay(2000);
    15. FastLED.addLeds<WS2811, DATA_PIN, RGB>(leds, NUM_LEDS);
    16. }
    17. // Main endless Loop
    18. void loop() {
    19. for(int bank1 = 0; bank1 < NUM_LEDS; bank1 = bank1 + 1) {
    20. // Turn our current led on to white, then show the leds
    21. if (bank1 - offset <= -1)
    22. { bank2 = NUM_LEDS + bank1 - offset ;}
    23. else
    24. { bank2 = bank1 - offset ;}
    25. leds[bank1] = CRGB::Red; //colour of bank1
    26. leds[bank2] = CRGB::Green; //colour of bank 2
    27. // Show the leds
    28. FastLED.show();
    29. // Wait a little bit
    30. delay(40);
    31. // Turn our current led back to black for the next loop around
    32. if (bank1 < bank_1_size)
    33. { c = (bank1 + NUM_LEDS - bank_1_size );}
    34. else
    35. { c = (bank1 - bank_1_size );}
    36. leds[c] = CRGB::Blue; //colour between bank1 & bank2
    37. if (bank2 < bank_2_size )
    38. { d = (bank2 + NUM_LEDS - bank_2_size );}
    39. else
    40. { d = (bank2 - bank_2_size );}
    41. leds[d] = CRGB::Yellow; //colour between bank2 and bank 1
    42. }
    43. }
    Was mich grade leicht verdutzt hat ist das du sagtest du hast einen Widerstand am Anfang reingelötet. Sollte der nicht ans Ende der Busleitung? Ich kenne das nur als Abschlußwiderstand der verhindern soll das Signale auf der Busleitung wieder zurückwandern und sich auslöschen. Wenn ich mir vorstelle das es ja schon eine recht lange Leitung ist mit wenn ich richtig gelesen habe 1Mbit was recht schnell ist dann könnte das der Fehler sein. Wenn die Andere Software auf einer anderen Baud sendet kann es auch sein das es dann ohne Probleme geht.
    Ok das kommt davon das man sich nicht vorher Schlau macht was die Schaltung eigendlich ist. Vergiss das mal mit dem Abschlußwiderstand. Das ist Falsch. Mich hatte es nur gewundert das du durch denk Finger einen Einfluß hast und da ich eher die Vermutung habe das dein Finger Ohmisch wirkthabe ich vermutet das es was bringen könnte.

    Ich habe aber jetzt mal im Datenblatt dieses ICs geschaut und es schein so das der zwischen jedem Segment das Signal wider anpasst. Ist es nur ein einziges Segment was diesen Effekt des Magischen Daumendrucks auslösen kann? Ist es die Verbindung zwischen dem µC und dem ersten ICs oder zwischen dem ersten und dem zweiten IC?
    @NeOn Ich muss zwischen denn ersten und denn Zweiten IC Drauf Drücken damit es geht. Mich Wundert es denn es ging auch schon ohne das ich drauf drücken musste. Es war der Selbe Aufbau. Ich musste auf einmal drauf drücken einfach so.

    @MarcelP.
    Wackelkontakt kann ich ausschließen dann würde es ja oben der FastLED Sketch auch nicht gehen. Und der läuft ja ohne Probleme nur der Glediator Sketch macht ärger
    Nein nur wenn ich mit denn finger drauf fasse gehen die LEDs an.

    ICs messen wie soll ich dad machen?
    Habe nur ein Multimeter ein oszilloskop habe ich nicht.

    Könnte es auch der Elegoo UNO R3 sein?
    Die Streifen gehe ja mit fastLED wäre dann ja aber auch blöd. Aber fällt mir grade so ein
    Potentialfehler was ist das genau, und wie kann ich es beheben?

    Könnte es ein Kommunikationsfehler sein? Das Irgendwas am Arduino defekt ist?

    Was mir aufgefallen ist ich wollte ein TPM2 Sketch auf ein Arduino packen zum Testen tja egal auf welchen Rechner immer kamm der fehler exit status 1
    Weil es lief ja schon fehlerfrei tage lag mit den Glediator!