Guten Tag zusammen Mein Momentanen Projekt ist für mich einbisschen zu anspruchsvoll daher frage ich hier nach. Nun ich würde gerne an einen uC ein Bluetooth modul und ein Digital RGB strip anschliessen. Der Ic sollte jedoch nicht alzu gross sein da ich nur ein Prototypfrässer zur verfügung habe, welcher keine alzu extrem enge Leiterbahnen erlaubt. Nun ich habe auf einem extern gefrässtem print bereits ein atmega 644 genutzt und hatte ein attiny 841 übungsprint. von diesen attiny 841 hätte ich noch einpaar hier doch kann ich diese Verwenden? Das Bluetooth modul hat nur ein tx, ein RX und Speisungsanschlüsse und die digitale RGBs könnte man doch an jeden beliebiegen anschluss anschliessen. Natürlich verliert man die Vorteile von spi doch gewinnt den vorteil das es universal einsetzbar ist. Ich mag mich irren aber schliesslich sind auf diesen strips doch nur schieberegister kaskadisch verbunden und pro takt sendet man das nächste bit. Doch die Frage ist ich habe mur eine data lane wie mach ich den clock? Speisung ein und aus? Es handelt sich um den ws2812b
Dominic K. schrieb: > nächste bit. Doch die Frage ist ich habe mur eine data lane wie mach ich > den clock? Speisung ein und aus? Es handelt sich um den ws2812b Beim WS2812b hast du keine CLOCK Leitung, nur DATA.
Das ist mir bewust doch irgendwie muss man doch auch ein 0 hereintakten können. Also muss man doch den takt übertragen können. also speisung aus zustand wechseln und speisung ein hätte ich gedacht
Dominic K. schrieb: > Das ist mir bewust doch irgendwie muss man doch auch ein 0 hereintakten > können. Also muss man doch den takt übertragen können. also speisung aus > zustand wechseln und speisung ein hätte ich gedacht Also irgendwie scheint es mir, dass dir da etwas doch nicht bewusst ist. Bitte, erst mal Datenblatt fur WS2812b lesen.
Dominic K. schrieb: > irgendwie muss man doch auch ein 0 hereintakten > können Der Unterschied zuwischen 0 und 1 wird über die Dauer der Pegel High und Low übertragen. Je nach Anzahl der LEDs und den gespeicherten Mustern reicht ein Tiny841 dafür aus, ich hab sowas auch schon mit nem Tiny85 gemacht.
Es wären maximal 120 leds aber halt rot gelb und blau. Nun habe ich das richtig verstanden es sind alles 3 er schiebe register in den leds. jeweils 1 wert pro farbe. also bei 2 leds müsste ich nur blau folgendes takten: 001 001. Halt einfach mit den Zeiten bzw lange high ein low kurz high ein high? Okey und das Bluetooth modul habe ich richtig erkannt einfach ein Pin mit rx und einen mit tx nehmen und dan sollte das gehen oder? Bzw rx steht für receiverx oder?
Dominic K. schrieb: > Es wären maximal 120 leds aber halt rot gelb und blau. Rot GRÜN Blau >Nun habe ich das > richtig verstanden es sind alles 3 er schiebe register in den leds. > jeweils 1 wert pro farbe. also bei 2 leds müsste ich nur blau folgendes > takten: 001 001. Das wird ein recht dunkles Blau, aber sehr wahrscheinlich hast du es sowieso nicht richtig kapiert. Pro Farbe kann man 256 Helligkeitswerte einstellen. Dh. pro Farbe 8Bit! Also nicht nur ein Bit für ein/aus. Marc V. schrieb: > Also irgendwie scheint es mir, dass dir da etwas doch nicht bewusst > ist. > Bitte, erst mal Datenblatt fur WS2812b lesen. Dem kann ich vorerst nur zustimmen ;-)
:
Bearbeitet durch User
Hier ein vor kurzem zusammen geschustertes Codebeispiel für einen 8Bit PIC (12MHz Befehlstakt) COLOR_OUT ist der Pin an dem die WS2812 hängt. An Programmspieicher bestand kein Mangel ;-)
1 | void colorOut(uint8_t * ptrColor){ |
2 | colorR = *ptrColor++; |
3 | colorG = *ptrColor++; |
4 | colorB = *ptrColor; |
5 | #asm
|
6 | BSF COLOR_OUT // -------------------------------- green color code |
7 | NOP
|
8 | NOP
|
9 | BTFSS COLOR_G,7 |
10 | BCF COLOR_OUT |
11 | NOP
|
12 | NOP
|
13 | NOP
|
14 | BCF COLOR_OUT |
15 | NOP
|
16 | NOP
|
17 | NOP
|
18 | BSF COLOR_OUT |
19 | NOP
|
20 | NOP
|
21 | BTFSS COLOR_G,6 |
22 | BCF COLOR_OUT |
23 | NOP
|
24 | NOP
|
25 | NOP
|
26 | BCF COLOR_OUT |
27 | NOP
|
28 | NOP
|
29 | NOP
|
30 | BSF COLOR_OUT |
31 | NOP
|
32 | NOP
|
33 | BTFSS COLOR_G,5 |
34 | BCF COLOR_OUT |
35 | NOP
|
36 | NOP
|
37 | NOP
|
38 | BCF COLOR_OUT |
39 | NOP
|
40 | NOP
|
41 | NOP
|
42 | BSF COLOR_OUT |
43 | NOP
|
44 | NOP
|
45 | BTFSS COLOR_G,4 |
46 | BCF COLOR_OUT |
47 | NOP
|
48 | NOP
|
49 | NOP
|
50 | BCF COLOR_OUT |
51 | NOP
|
52 | NOP
|
53 | NOP
|
54 | BSF COLOR_OUT |
55 | NOP
|
56 | NOP
|
57 | BTFSS COLOR_G,3 |
58 | BCF COLOR_OUT |
59 | NOP
|
60 | NOP
|
61 | NOP
|
62 | BCF COLOR_OUT |
63 | NOP
|
64 | NOP
|
65 | NOP
|
66 | BSF COLOR_OUT |
67 | NOP
|
68 | NOP
|
69 | BTFSS COLOR_G,2 |
70 | BCF COLOR_OUT |
71 | NOP
|
72 | NOP
|
73 | NOP
|
74 | BCF COLOR_OUT |
75 | NOP
|
76 | NOP
|
77 | NOP
|
78 | BSF COLOR_OUT |
79 | NOP
|
80 | NOP
|
81 | BTFSS COLOR_G,1 |
82 | BCF COLOR_OUT |
83 | NOP
|
84 | NOP
|
85 | NOP
|
86 | BCF COLOR_OUT |
87 | NOP
|
88 | NOP
|
89 | NOP
|
90 | BSF COLOR_OUT |
91 | NOP
|
92 | NOP
|
93 | BTFSS COLOR_G,0 |
94 | BCF COLOR_OUT |
95 | NOP
|
96 | NOP
|
97 | NOP
|
98 | BCF COLOR_OUT |
99 | NOP
|
100 | NOP
|
101 | NOP
|
102 | |
103 | BSF COLOR_OUT // ---------------------------------- red color code |
104 | NOP
|
105 | NOP
|
106 | BTFSS COLOR_R,7 |
107 | BCF COLOR_OUT |
108 | NOP
|
109 | NOP
|
110 | NOP
|
111 | BCF COLOR_OUT |
112 | NOP
|
113 | NOP
|
114 | NOP
|
115 | BSF COLOR_OUT |
116 | NOP
|
117 | NOP
|
118 | BTFSS COLOR_R,6 |
119 | BCF COLOR_OUT |
120 | NOP
|
121 | NOP
|
122 | NOP
|
123 | BCF COLOR_OUT |
124 | NOP
|
125 | NOP
|
126 | NOP
|
127 | BSF COLOR_OUT |
128 | NOP
|
129 | NOP
|
130 | BTFSS COLOR_R,5 |
131 | BCF COLOR_OUT |
132 | NOP
|
133 | NOP
|
134 | NOP
|
135 | BCF COLOR_OUT |
136 | NOP
|
137 | NOP
|
138 | NOP
|
139 | BSF COLOR_OUT |
140 | NOP
|
141 | NOP
|
142 | BTFSS COLOR_R,4 |
143 | BCF COLOR_OUT |
144 | NOP
|
145 | NOP
|
146 | NOP
|
147 | BCF COLOR_OUT |
148 | NOP
|
149 | NOP
|
150 | NOP
|
151 | BSF COLOR_OUT |
152 | NOP
|
153 | NOP
|
154 | BTFSS COLOR_R,3 |
155 | BCF COLOR_OUT |
156 | NOP
|
157 | NOP
|
158 | NOP
|
159 | BCF COLOR_OUT |
160 | NOP
|
161 | NOP
|
162 | NOP
|
163 | BSF COLOR_OUT |
164 | NOP
|
165 | NOP
|
166 | BTFSS COLOR_R,2 |
167 | BCF COLOR_OUT |
168 | NOP
|
169 | NOP
|
170 | NOP
|
171 | BCF COLOR_OUT |
172 | NOP
|
173 | NOP
|
174 | NOP
|
175 | BSF COLOR_OUT |
176 | NOP
|
177 | NOP
|
178 | BTFSS COLOR_R,1 |
179 | BCF COLOR_OUT |
180 | NOP
|
181 | NOP
|
182 | NOP
|
183 | BCF COLOR_OUT |
184 | NOP
|
185 | NOP
|
186 | NOP
|
187 | BSF COLOR_OUT |
188 | NOP
|
189 | NOP
|
190 | BTFSS COLOR_R,0 |
191 | BCF COLOR_OUT |
192 | NOP
|
193 | NOP
|
194 | NOP
|
195 | BCF COLOR_OUT |
196 | NOP
|
197 | NOP
|
198 | NOP
|
199 | |
200 | BSF COLOR_OUT // --------------------------------- blue color code |
201 | NOP
|
202 | NOP
|
203 | BTFSS COLOR_B,7 |
204 | BCF COLOR_OUT |
205 | NOP
|
206 | NOP
|
207 | NOP
|
208 | BCF COLOR_OUT |
209 | NOP
|
210 | NOP
|
211 | NOP
|
212 | BSF COLOR_OUT |
213 | NOP
|
214 | NOP
|
215 | BTFSS COLOR_B,6 |
216 | BCF COLOR_OUT |
217 | NOP
|
218 | NOP
|
219 | NOP
|
220 | BCF COLOR_OUT |
221 | NOP
|
222 | NOP
|
223 | NOP
|
224 | BSF COLOR_OUT |
225 | NOP
|
226 | NOP
|
227 | BTFSS COLOR_B,5 |
228 | BCF COLOR_OUT |
229 | NOP
|
230 | NOP
|
231 | NOP
|
232 | BCF COLOR_OUT |
233 | NOP
|
234 | NOP
|
235 | NOP
|
236 | BSF COLOR_OUT |
237 | NOP
|
238 | NOP
|
239 | BTFSS COLOR_B,4 |
240 | BCF COLOR_OUT |
241 | NOP
|
242 | NOP
|
243 | NOP
|
244 | BCF COLOR_OUT |
245 | NOP
|
246 | NOP
|
247 | NOP
|
248 | BSF COLOR_OUT |
249 | NOP
|
250 | NOP
|
251 | BTFSS COLOR_B,3 |
252 | BCF COLOR_OUT |
253 | NOP
|
254 | NOP
|
255 | NOP
|
256 | BCF COLOR_OUT |
257 | NOP
|
258 | NOP
|
259 | NOP
|
260 | BSF COLOR_OUT |
261 | NOP
|
262 | NOP
|
263 | BTFSS COLOR_B,2 |
264 | BCF COLOR_OUT |
265 | NOP
|
266 | NOP
|
267 | NOP
|
268 | BCF COLOR_OUT |
269 | NOP
|
270 | NOP
|
271 | NOP
|
272 | BSF COLOR_OUT |
273 | NOP
|
274 | NOP
|
275 | BTFSS COLOR_B,1 |
276 | BCF COLOR_OUT |
277 | NOP
|
278 | NOP
|
279 | NOP
|
280 | BCF COLOR_OUT |
281 | NOP
|
282 | NOP
|
283 | NOP
|
284 | BSF COLOR_OUT |
285 | NOP
|
286 | NOP
|
287 | BTFSS COLOR_B,0 |
288 | BCF COLOR_OUT |
289 | NOP
|
290 | NOP
|
291 | NOP
|
292 | BCF COLOR_OUT |
293 | NOP
|
294 | NOP
|
295 | NOP
|
296 | #endasm
|
297 | }
|
:
Bearbeitet durch User
Das Datenblatt habe ich gelesen nur nicht gut genug so wie es scheint. Nun dein code macht für mich nicht viel sin. diese nops sind doch da um den compiler vom überspringen des codes zu hindern. Und die anderen befehle machen für mich komplett keinen sinn.
Dominic K. schrieb: > Das Datenblatt habe ich gelesen nur nicht gut genug so wie es scheint. Es werden 3Byt oder 24bit (8bit RED, 8bit GREEN und 8bit BLUE) auf der DATA Leitung übertragen: RRRRRRRRGGGGGGGGBBBBBBBB <<<<------------------ Wenn entsprechendes bit 1 ist, wird folgendes übertragen:
1 | __________
|
2 | DATA | |______ |
3 | 800us 450us |
Und wenn dieses bit 0 ist, folgendes:
1 | _____
|
2 | DATA | |___________ |
3 | 450us 800us |
Somit dauert 1 bit immer 1,25ms, ergibt 800KHz. Jede LED behält die ersten 24bit für sich (im Abstellraum), die anderen bits werden brav durchgeschoben. Wenn DATA Leitung länger als 50us LOW ist, werden die übernommenen 24bit Daten aus dem Abstellraum geholt, zum Schaufenster weitergereicht und angezeigt. ;-) Und das ist schon alles. Man muss nur imstande sein, die Zeiten (ziemlich) genau einzuhalten, mehr nicht.
:
Bearbeitet durch User
Dominic K. schrieb: > Nun dein code macht für mich nicht viel sin. diese nops sind doch da um > den compiler vom überspringen des codes zu hindern. Und die anderen > befehle machen für mich komplett keinen sinn Wie gesagt "zusammen geschustert" ;-) Die ganzen NOPs NoOperation sind erforderliche für das Timing. Da vergeht einfach ein Zyklus ohne dass sich etwas ändert. BSF ist bei PICs BitSetFile also "Setze das Bit (den Pin) auf Eins/High". BCF ist für BitCleaFile, also "Setze Bit/Pin auf Null/Low". Wenn man das Ganze dann mal zeitmäßgig aufschreiben würde, käme man schon dahinter, was der Code machen "soll". Das war alles nur für eine einzige WS2812b und sollte nur zeigen, dass 001 für Blau irgendwie doch nicht alles sein kann...
:
Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.