Acties:
  • 0 Henk 'm!

  • kitao
  • Registratie: Juli 2012
  • Laatst online: 14:11
jeroen vrij schreef op zaterdag 23 maart 2019 @ 18:14:
Heb hem net op gelost.
Heb in setup weer een L1 tot 3 aangemaakt.
Waar ik bij alle de 3 digitalWrite heb aangegeven.

Als je die code gebruikt.
Moet je even de pins 11 12 13 op LOW zetten bij de start van de loop.
Heb deze code met de mosfets op de layers gemaakt.
code:
1
2
3
4
5
6
void L1()
 {
  digitalWrite(12, LOW);
  digitalWrite(13, LOW);
  digitalWrite(11, HIGH);
 }
Ben nog bezig met code2 en een revisie erbij gezet, class5.ino
https://github.com/Alectus/3D-Led-Cube

Samengevat, alle delays zitten nu ook in de class.
De void functies eronder, Lall - Zall - etc. wou ik er ook inzitten maar dan gaat die nesten. Dat mag - wist ook niet - maar vond het weinig voordeel geven. Is nu wel totaal onleesbaar zooitje geworden, toch is het patroon vd ledjes imo hetzelfde gebleven ivgm de vorige revisie.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
class Functie {   
          public:
  Functie Z(int z) {  
    kurk = digitalRead(z);  
    if (kurk == HIGH) { digitalWrite(z, 0);  } 
    else { digitalWrite(z, HIGH);      } 
   return *this;
  } 
  Functie L(int a) {    //  Voor de analoge pinnen A0-2
    kurk = digitalRead(a);  
    if (kurk == HIGH) { digitalWrite(a, 0);  } 
    else { digitalWrite(a, HIGH);      } 
     return *this;
     }
  Functie P() {    // P = Pause ter vervanging van de delays
      delay(t200);
      return *this;
   }
  }roep;       
  
// *******************   einde class Functie   ******************

void Lall(){      // Lall wordt 4x aangeroepen
   roep. L(14).    L(15).    L(16);
}
void Zall(){  
    roep.Z(2).    Z(3).    Z(4).    Z(5).    Z(6).    Z(7).    Z(8).    Z(9).    Z(10);
}

//*****************************************************

void loop(){   // Begin void loop

for (int i = 0; i < 4; i++){

    roep.L(14).Z(2);    roep.P();    roep.Z(3);    roep.P();    roep.Z(4);
    roep.P();    roep.Z(2).Z(7);    roep.P();    roep.Z(3).    Z(6);    roep.P();
    roep.Z(4).    Z(5);    roep.P();    roep.Z(7).    Z(8);    roep.P();    roep.Z(6).    Z(9);
    roep.P();    roep.Z(5).    Z(10);    roep.P();    roep.Z(8).    Z(9).L(15);    roep.P();
    roep.L(14).Z(8);    roep.P();    roep.Z(10).    Z(5);    roep.P();    roep.Z(9).    Z(2);
    roep.P();    roep.Z(8).    Z(3);    roep.P();    roep.Z(5).    Z(4);    roep.P();    roep.L(14).L(16);
}

De teller staat nu op 346 regels.
.

Acties:
  • 0 Henk 'm!

  • jeroen vrij
  • Registratie: Februari 2016
  • Laatst online: 09-05-2022

jeroen vrij

Just a arduino noob

Topicstarter
Goed bezig.

Ik ben druk bezig wat effect te creëren.
Begin al behoorlijk wat dingen door te krijgen.
Van hoog naar laag tellen en terug.
The case functie the if.
Probeer nu willekeurig leds aan te laten gaan.
Maar dat valt niet mee haha

Acties:
  • 0 Henk 'm!

  • kitao
  • Registratie: Juli 2012
  • Laatst online: 14:11

Acties:
  • 0 Henk 'm!

  • jeroen vrij
  • Registratie: Februari 2016
  • Laatst online: 09-05-2022

jeroen vrij

Just a arduino noob

Topicstarter
Zo iets?

Mijn bedoeling is dat hij 10x een kolom activeert.
Daarna 1x een layer.
Dan weer 10x kolom.
Enz...
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
long randNumber;

void setup() {

  randomSeed(analogRead(0));
}

void loop() 
 {
 for (int i = 0; i < 10; i++) 
 {
  randNumber = random(2, 10);
  Kolom(randNumber);
  delay(randNumber*10);
 }
 {
  randNumber = random(1, 3);
  Layer(randNumber);
 }
 for (int i = 0; i < 10; i++) 
 {
  randNumber = random(2, 10);
  Kolom(randNumber);
  delay(randNumber*10);
 }
 {
  randNumber = random(1, 3);
  Layer(randNumber);

Acties:
  • 0 Henk 'm!

  • kitao
  • Registratie: Juli 2012
  • Laatst online: 14:11
jeroen vrij schreef op zaterdag 23 maart 2019 @ 23:04:
Zo iets?

Mijn bedoeling is dat hij 10x een kolom activeert.
Daarna 1x een layer.
Dan weer 10x kolom.
Enz...
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
long randNumber;

void setup() {

  randomSeed(analogRead(0));
}

void loop() 
 {
 for (int i = 0; i < 10; i++) 
 {
  randNumber = random(2, 10);
  Kolom(randNumber);
  delay(randNumber*10);
 }
 {
  randNumber = random(1, 3);
  Layer(randNumber);
 }
 for (int i = 0; i < 10; i++) 
 {
  randNumber = random(2, 10);
  Kolom(randNumber);
  delay(randNumber*10);
 }
 {
  randNumber = random(1, 3);
  Layer(randNumber);
Dat zou je moeten testen.
Ook random in deze vorm is weer zo'n specifieke arduino instructie die ik al tig jaar niet meer heb geprobeerd.
Kan het hier ook niet testen omdat
a. Ik nog bezig ben met code2
b. Ik het schema niet zie om na te bouwen.

Acties:
  • 0 Henk 'm!

  • jeroen vrij
  • Registratie: Februari 2016
  • Laatst online: 09-05-2022

jeroen vrij

Just a arduino noob

Topicstarter
Hij komt door de compile.
Mits er 3x} op het eind staat.

Acties:
  • 0 Henk 'm!

  • kitao
  • Registratie: Juli 2012
  • Laatst online: 14:11
CompileR heet dat ding.
En welk haakje met welk ander haakje is verbonden kan je zien als je de cursor er naast zet, dan gaat meteen het daarmee verbonden haakje oplichten.
Maar je leert snel, dat is wel zeker.

Dit moet m dan zijn, verder verkorten van code2 lukt me niet zonder iedere leesbaarheid te verliezen behalve dan misschien een for-lusje om pinnen te inititaliseren.
Suggesties ter verbetering zijn altijd welkom en ja, ik heb alle afzonderlijke delays platgedrukt tot ene massa.Voor de rest geen verschil met de eerste revisie qua led-beeld.

En ps/
Sorry voor de lap code maar ik zie ook geen foto emmer waar mensen hun hele series pagina-grote kiekjes in dumpen van hun duizenden euro's 3D printer projecten e.d.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
int ledPin1 = 2; int ledPin2 = 3;int ledPin3 = 4; int ledPin4 = 5;int ledPin5 =  6; int ledPin6 =  7;int ledPin7 =  8; int ledPin8 =  9;int ledPin9 =  10; 
int ledPin10 = 14;  int ledPin11 = 15;  int ledPin12 = 16;  // = A0-2
int kurk = 0;       // ledState heet nu kurk en bijbehorende LOW is vervangen door 0.
int t200 = 180;     // om delay te veranderen 
// *************************************************************************************************
void setup() {     
    pinMode(ledPin1, OUTPUT);     pinMode(ledPin2, OUTPUT);    pinMode(ledPin3, OUTPUT);     pinMode(ledPin4, OUTPUT);    pinMode(ledPin5, OUTPUT);     pinMode(ledPin6, OUTPUT);
    pinMode(ledPin7, OUTPUT);     pinMode(ledPin8, OUTPUT);    pinMode(ledPin9, OUTPUT);     pinMode(ledPin10, OUTPUT);    pinMode(ledPin11, OUTPUT);     pinMode(ledPin12, OUTPUT);
    digitalWrite(A0, 0);    digitalWrite(A1, 0);    digitalWrite(A2, 0);
    } 
// *************************************************************************************************
      class Functie {   
          public:
  Functie Z(int z) {    // Voor de pinnen 2 t/m 10
    kurk = digitalRead(z);  
    if (kurk == HIGH) { digitalWrite(z, 0);  } 
    else { digitalWrite(z, HIGH);      } 
   return *this;
  } 
  Functie L(int a) {    //  Voor de analoge pinnen A0-2
    kurk = digitalRead(a);  
    if (kurk == HIGH) { digitalWrite(a, 0);  } 
    else { digitalWrite(a, HIGH);      } 
     return *this;
     }
  Functie P() {    // P = Pauze ter vervanging van de delays
      delay(t200);
      return *this;
   }
  }roep;       
  
// *******************   einde class Functie   ******************

void Lall(){      // Lall wordt 4x aangeroepen
   roep. L(14).    L(15).    L(16);
}
void Zall(){  
    roep.Z(2).    Z(3).    Z(4).    Z(5).    Z(6).    Z(7).    Z(8).    Z(9).    Z(10);
}
void X1(){
    roep.Z(2).    Z(3).    Z(4);
}
void X2(){
    roep.Z(4).    Z(5).    Z(6);
}
void X3(){
    roep.Z(8).    Z(9).    Z(10);
}
void Y1(){
    roep.Z(2).    Z(5).    Z(8);
}
void Y2(){
    roep.Z(3).    Z(6).    Z(9);
}
void Y3(){
    roep. Z(4).    Z(7).    Z(10);
}
// ********************************************************************************************
void loop(){   // Begin void loop
  
    for (int i = 0; i < 16; i++){
    roep.L(14);
    Y1();
    //roep.P();
    roep.P().L(14);
    Y1();
    roep.L(15);
    Y2();
    roep.P().L(15);
    Y2();
    roep.L(16);
    Y3();
    roep.P().L(16);
    Y3;
}
    for (int i = 0; i < 16; i++){
    roep.L(15);
    Y1();    Y2();    Y3();
    roep.P().L(15);
    Y1();    Y2();    Y3();
}
    for (int i = 0; i < 16; i++){     
    roep.L(14);
    Y3();
    roep.P().L(14);
    Y3();
    roep.L(15);
    Y2();
    roep.P().L(15);
    Y2();
    roep.L(16);
    Y1();
    roep.P().L(16);
    Y1();
}
    for (int i = 0; i < 16; i++){  
    roep.L(14).    L(15).    L(16);
    Y2();
    roep.P().L(14).    L(15).    L(16);
    Y2();
}
    for (int i = 0; i < 16; i++){
    roep.L(14);
    Y1();
    roep.P().L(14);
    Y1();
    roep.L(15);
    Y2();
    roep.P().L(15);
    Y2();
    roep.L(16);
    Y3();
    roep.P().L(16);
    Y3;
}
    for (int i = 0; i < 16; i++){
    roep.L(15);
    Y1();    Y2();    Y3();
    roep.P().L(15);
    Y1();    Y2();    Y3();
}
    for (int i = 0; i < 16; i++){     
    roep.L(14);
    Y3();
    roep.P().L(14);
    Y3();
    roep.L(15);
    Y2();
    roep.P().L(15);
    Y2();
    roep.L(16);
    Y1();
    roep.P().L(16);
    Y1();
}
    for (int i = 0; i < 16; i++){   
    roep.L(14).   L(15).    L(16);
    Y2();
    roep.P().L(14).    L(15).    L(16);
    Y2();
}  
for (int i = 0; i < 16; i++){  
    roep.L(14).Z(2).Z(4).Z(8).Z(10).P().Z(2).    Z(4).    Z(8).    Z(10).    Z(3).    Z(5).    Z(7).    Z(9);    roep.P().Z(3).Z(5).    Z(7).    Z(9).L(14);
}

    for (int i = 0; i < 16; i++){
    roep.L(15).Z(2).    Z(4).    Z(8).    Z(10).P().Z(2).    Z(4).    Z(8).    Z(10).    Z(3).    Z(5).    Z(7).    Z(9);    roep.P().Z(3).    Z(5).    Z(7).    Z(9).L(15);
}
    for (int i = 0; i < 16; i++){
    roep.L(16).Z(2).    Z(4).    Z(8).    Z(10).P().Z(2).    Z(4).    Z(8).   Z(10).    Z(3).    Z(5).    Z(7).    Z(9);    roep.P().Z(3).   Z(5).   Z(7).    Z(9).L(16);
}
    for (int i = 0; i < 16; i++){
    roep.L(16);
    Y1();
    roep.P();
    Y1();    Y2();
    roep.P();
    Y2();    Y3();
    roep.P().L(16).    L(15). P();
    Y3();    Y2();
    roep.P();
    Y2();    Y1();
    roep.P().L(15).    L(14).P();
    Y1();    Y2();
    roep.P();
    Y2();    Y3();
    roep.P();
    Y3();
    roep.L(14);
}
    for (int i = 0; i < 4; i++){
    roep.L(14).Z(2).P().Z(2).    Z(3).P().Z(3).    Z(4).P().Z(4).    Z(7);    roep.P(). Z(7).    Z(6).P(). Z(6).    Z(5).P(). Z(5).    Z(8);    
    roep.P(). Z(9).    Z(10).P().L(14).    L(15).P().Z(10).    Z(9);    roep.P().Z(9).    Z(8).P().Z(8).    Z(5).P().Z(5).    Z(6).P();
    roep.Z(6).    Z(7).P().Z(7).    Z(4).P().Z(4).    Z(3);    roep.P().Z(3).    Z(2).P().L(15).    L(16).P().Z(2).    Z(3).P();
    roep.Z(3).    Z(4).P().Z(4).    Z(7).P().Z(7).    Z(6).P();    roep.Z(6).    Z(5).P().Z(5).    Z(8).P().Z(9).    Z(10).P().L(16).Z(10);
}
// **************************************************************************************************************
    roep.L(14).Z(2);    roep.P();    roep.Z(3);    roep.P();    roep.Z(4);    roep.P();    roep.Z(2).Z(7);    roep.P();    roep.Z(3).    Z(6);    roep.P();
    roep.Z(4).    Z(5);    roep.P();    roep.Z(7).    Z(8);    roep.P();    roep.Z(6).    Z(9);    roep.P();    roep.Z(5).    Z(10);    roep.P();    roep.Z(8).    Z(9).L(15);    roep.P();
    roep.L(14).Z(8);    roep.P();    roep.Z(10).    Z(5);    roep.P();    roep.Z(9).    Z(2);    roep.P();    roep.Z(8).    Z(3);    roep.P();    roep.Z(5).    Z(4);    roep.P();    roep.L(14).L(16);
    roep.P();        
    Lall();        roep.P();    Lall();    roep.P();    Lall();    roep.P();    Lall();
    roep.P();    X1();    X2();
    roep.P();    X2();    X3();
    roep.P();    X3();    X2();
    roep.P();    X2();    X1();
    roep.P();    roep.Z(4).        Z(5);    roep.P();    roep.Z(3).    Z(8);
    roep.P();    Y1();    Y2();
    roep.P();    Y2();    Y3();
    roep.P();    Y3();    Y2();
    roep.P();    Y2();    Y1();
    roep.P();    roep.L(16);    roep.P();    roep.L(15);    roep.P();    roep.L(14);
    Y1();
// ***************************************************************************************************************
    for (int i = 0; i < 8; i++){
        roep.L(14);
        Zall();
        roep.P();        roep.L(14).        L(15);        roep.P();        roep.L(15).        L(16);        roep.P();        roep.L(16);
}
   for (int i = 0; i < 4; i++){
        roep.L(14);
        Zall();
        roep.P();        roep.L(14).        L(15);        roep.P();        roep.L(15).        L(16);        roep.P();        roep.L(16); 
}
    // **********************************************************************************************************************************************
        roep.L(14);
        Y1();
        roep.P();
        Y1();        Y2();
        roep.P();
        Y2();        Y3();
        roep.P();
        roep.L(14).        L(15);        roep.P();
        Y3();        Y2();
        roep.P();
        Y2();        Y1();
        roep.P();        roep.L(15).        L(16);
        roep.P();
        Y1();        Y2();
        roep.P();
        Y2();        Y3();
        roep.P();
        Y3();
        roep.L(16);
// ********************************************************************************************************************************************************************************************
    for (int i = 0; i < 10; i++){
        roep.L(14);
        X3();
        roep.P();        roep.L(14).        L(15);
        X3();        X2();
        roep.P();        roep.L(15).        L(16);
        X2();        X1();
        roep.P();        roep.L(16);
        X1();
}
   for (int i = 0; i < 10; i++){
        X2();
        roep.L(14);        roep.P();        roep.L(14).        L(15);        roep.P();        roep.L(15).        L(16);        roep.P();
        X2();
        roep.L(16);
}
    for (int i = 0; i < 10; i++){    
        roep.L(14);
        X1();
        roep.P();        roep.L(14);
        X1();
        roep.L(15);
        X2();
        roep.P();        roep.L(15);
        X2();
        roep.L(16);
        X3();
        roep.P();        roep.L(16);
        X3();
}
// *********************************************************************************************
        roep.L(15);
        Y1();        Y2();        Y3();        
        roep.P();         roep.L(15);
        Y1();        Y2();        Y3();
// *********************************************************************************************
        
    for (int i = 0; i < 20; i++){
        roep.L(14).Z(3).        Z(5).       Z(7).        Z(9);        roep.P();        roep.L(14).        L(15);        roep.P();        roep.L(15).        L(16);        roep.P();        roep.L(16);
}
    for (int i = 0; i < 20; i++){
        roep.L(14).Z(2).        Z(4).        Z(8).        Z(10);        roep.P();        roep.L(14).        L(15);        roep.P();        roep.L(15).        L(16);        roep.P();        roep.L(16);
}
    for (int i = 0; i < 20; i++){
        roep.L(14).Z(3).        Z(5).        Z(7).        Z(9);        roep.P();        roep.L(14).        L(15);    roep.P();        roep.L(15).        L(16);        roep.P();        roep.L(16);
}
    for (int i = 0; i < 20; i++){
        roep.L(14).Z(2).        Z(4).        Z(8).        Z(10);        roep.P();        roep.L(14).        L(15);        roep.P();        roep.L(15).        L(16);        roep.P();        roep.L(16);
}
    for (int i = 0; i < 20; i++){
        roep.L(14).Z(3).        Z(5).        Z(7).        Z(9);        roep.P();        roep.L(14).        L(15);        roep.P();        roep.L(15).        L(16);        roep.P();        roep.L(16);
}
    for (int i = 0; i < 20; i++){
        roep.L(14).Z(2).     Z(4).        Z(8).        Z(10);        roep.P();        roep.L(14).        L(15);        roep.P();        roep.L(15).        L(16);        roep.P();        roep.L(16);
}
    }

281 regels

#Jeroen
Als je een ander project hebt kijk ik graag mee maar bij deze stop ik met de kuub leds.
Alle dank voor de inspiratie :)
.

[ Voor 101% gewijzigd door kitao op 24-03-2019 10:59 ]


Acties:
  • 0 Henk 'm!

  • jeroen vrij
  • Registratie: Februari 2016
  • Laatst online: 09-05-2022

jeroen vrij

Just a arduino noob

Topicstarter
Jij ook bedankt.

Had nog even een schets voor je gemaakt.
Mocht je in de toekomst nog wat willen doen met je code.

Weet niet hoe jou simulator met de stroom om gaat of dat realistisch is.
Zo ja kan kan dat het probleem zijn als er soms niks aan gaat omdat de arduino maar 30ma levert en een hele laag max 90ma verbruikt.
Daarom gebruik ik mosfets of transistors

Afbeeldingslocatie: https://tweakers.net/ext/f/OMMwZXN7n74lWVyRV6gwMdYz/thumb.jpg

Er is mijn took opgevallen dat mijn sketch op de uno 1200kb gebruikt en op een ander soort arduino 5200kb gebruikt dat is vaag :)

[ Voor 109% gewijzigd door jeroen vrij op 24-03-2019 10:37 ]


Acties:
  • 0 Henk 'm!

  • kitao
  • Registratie: Juli 2012
  • Laatst online: 14:11
jeroen vrij schreef op zondag 24 maart 2019 @ 07:59:
Jij ook bedankt.

Had nog even een schets voor je gemaakt.
Mocht je in de toekomst nog wat willen doen met je code.

Weet niet hoe jou simulator met de stroom om gaat of dat realistisch is.
Zo ja kan kan dat het probleem zijn als er soms niks aan gaat omdat de arduino maar 30ma levert en een hele laag max 90ma verbruikt.
Daarom gebruik ik mosfets of transistors

[Afbeelding]

Er is mijn ook opgevallen dat mijn sketch op de uno 1200kb gebruikt en op een ander soort arduino 5200kb gebruikt dat is vaag :)
Inderdaad vaag, zou ik ook niet weten.
Ben toch weer van gedachten veranderd, sorry, had last van ochtendhumeur.
Wat de stroom betreft in simu, dat kan ik wel in beeld krijgen, mss tzt eens proberen.
Nu je het daar toch over hebt, in jouw schakeling zie ik af en toe wel een paar leds wit oplichten en dat is volgens mij geen goed teken. Moet er wel bijzeggen dat ik amper naar de schakeling heb gekeken maar als ik me niet vergis betekent dit
void setup(){
digitalWrite(A0, 0); digitalWrite(A1, 0); digitalWrite(A2, 0);
)

dat de pinnen A0-2 als ground dienen ?
Edit : nee dat kan dus niet want die zitten aan de anodes (?)

Dan misschien daar nog een zekeringetje weerstandje in zetten.
Ik heb de vorige code opnieuw gewijzigd, vond de Pauze Functie P() in Class toch enorme flauwekul en had als nadeel dat de delays in de code amper nog terug te vinden zijn. Dat heb ik weer teruggezet en schema en code staan hieronder als Class8. Als je die code plakt in de Arduino IDE op vol scherm is het een stuk leesbaarder.

Kwam daarbij er ook achter dat een delay() ;; geen verschil maakt met een delay() ;
Dat heb ik nooit geweten dus is best leerzaam dit project maar wat code2 betreft - tenzij iemand met een echt goede suggestie komt hoe dit te verbeteren - dat was wat mij betreft de laatste revisie.

Er zitten ook mosfets in simu zie ik net, dus zal jouw schakeling tzt proberen na te bouwen, bedankt voor de tekening.

code eind revisie
https://github.com/Alectu...de2_CompactKladClass8.ino
bijbehorende schema tekening
https://github.com/Alectu...be/blob/master/Class8.JPG

.

Acties:
  • 0 Henk 'm!

  • jeroen vrij
  • Registratie: Februari 2016
  • Laatst online: 09-05-2022

jeroen vrij

Just a arduino noob

Topicstarter
Ik heb ondertussen begrepepen dat A0 niet gebruikt kan worden voor de pins.
Dat schijnt 14 te zijn enz.

Acties:
  • 0 Henk 'm!

  • kitao
  • Registratie: Juli 2012
  • Laatst online: 14:11
Ja hoor, alle A0-5 kunnen als 'normale' pin worden gebruikt. Had dat tenminste laatst nog opgezocht toen ik de A5 in het led-klokje topic toepaste als latch. Stap 4a was dat geloof ik.

En inderdaad kan je A0-5 de nummers 14 t/m 19 geven. Dat had ik hier vandaan

https://arduino.stackexch...-to-loop-over-analog-pins

en zo heb ik het ook toegepast in code Class8.

Schema plotter

Afbeeldingslocatie: https://i.imgur.com/iZKuYfQ.jpg
klik

Die heb ik trouwens ook in het echt, hoeven niet erg duur te zijn en zitten iets van 8 draden op.

Amperes worden max 57mA, is dat teveel ?

Afbeeldingslocatie: https://i.imgur.com/3SUW4Zn.jpg?1


Schijnt niet te plotten te zijn, kan het althans (nog) nergens op klikken.
Dit zijn amperemeters met drie aansluitingen, waar het tekstblokje zit is eigenlijk het derde aansluitpunt.
Is zeker nieuw tegenwoordig dat er drie aansluitingen op zo'n meter zitten ?
.

[ Voor 87% gewijzigd door kitao op 24-03-2019 22:15 ]


Acties:
  • 0 Henk 'm!

  • jeroen vrij
  • Registratie: Februari 2016
  • Laatst online: 09-05-2022

jeroen vrij

Just a arduino noob

Topicstarter
Ik heb nog een puzzel voor wie het antwoord weet.

int ledpins[] = {1 t/m36} zonder alles uit te tikken.
Is dat mogelijk.

Acties:
  • 0 Henk 'm!

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 27-09 13:03
Ik zie geen verschil tussen je Z() en L() methoden, beide komen neer op een toggle:
C++:
1
digitalWrite( pin, !digitalRead( pin ) );

De "kurk" variabele kan dan ook weg.

Overigens zou ik een functie maken waarmee je meerdere pinnen tegelijk kunt setten/resetten en togglen zodat je alles makkelijk in een gedefinieerde state kunt brengen.

Verder heeft de class waar ze in staan geen state dus het zou voor de hand liggen om de methoden static te maken of er vrijstaande functies van te maken (niet in een class).
jeroen vrij schreef op zondag 24 maart 2019 @ 23:16:
Ik heb nog een puzzel voor wie het antwoord weet.

int ledpins[] = {1 t/m36} zonder alles uit te tikken.
Is dat mogelijk.
Wat bedoel je met "uit te tikken" ? Alles tegelijk met 1 aanroep uit zetten?

C++:
1
2
3
4
5
6
7
void Z( std::initializer_list<int> pins )
{
    for( auto pin : pins ) {
        digitalWrite( pin, !digitalRead( pin ) );
    }
}
Z({1,6,9,10,12});

Dit is de naïeve manier, met wat digging en een datasheet kun je iets dergelijks waarschijnlijk met een minimum aan code doen omdat de hardware vaak 8/16/32 uitgangen met 1 register kan manipuleren.

[ Voor 41% gewijzigd door farlane op 24-03-2019 23:32 ]

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


Acties:
  • 0 Henk 'm!

  • kitao
  • Registratie: Juli 2012
  • Laatst online: 14:11
Ik vermoed dat Jeroen bedoelt 'zonder alles uit te typen' en met ledpins de pinnen op Arduino bedoelt.
Die hebben er geen 36 als het nog steeds om een Uno gaat, dus misschien vergis ik me toch in de intepretatie. Met een for-loop kan je wel een hele rijtje tegelijk declareren, of initialiseren, dan zou ik een voorbeeld moeten zoeken welke vd twee daarvoor gebruikt wordt.
Maar ja, daar heb je het weer, dat is specifiek Arduino en heb daar nog niet veel prio aan. Zelfde met dat togglen wat jij aangeeft, dat is ook (deels) Arduino programmeren. Desalniettemin, ik stel je feedback zeer op prijs en en zal dat eens nader bekijken.

@jeroen vrij
Die laatste tekening, ben je van plan die aan te houden of heb je ondertussen andere plannen ?
.

[ Voor 7% gewijzigd door kitao op 24-03-2019 23:35 ]


Acties:
  • 0 Henk 'm!

  • jeroen vrij
  • Registratie: Februari 2016
  • Laatst online: 09-05-2022

jeroen vrij

Just a arduino noob

Topicstarter
Ja maar 1 tot 36 lukt wel met een for loop.
Bedoel eigenlijk iets anders maar hij verzond hem al.

for(int i=1; i<=36; i++)
{
Shift:writebit(i, HIGH);

Maar als ik nou 1, 7, 13, 20, 26, 34 wil steeds een stap van 6 kan dat dat ik dan bij ++
Bijvoorbeeld +6

Ja ben met 6 shuifregisters aan het spelen.
Heb in tussen mijn code aangepast op alleen arduino.
Dacht is voor jou handiger maar zal hem zo weer omzetten.

[ Voor 23% gewijzigd door jeroen vrij op 24-03-2019 23:38 ]


Acties:
  • 0 Henk 'm!

  • kitao
  • Registratie: Juli 2012
  • Laatst online: 14:11
Volgens mij hadden ze in basic daar een step functie voor, maar hier zal je het wrs met een extra counter moeten doen.
for (int i=1; i<=36; i++)
counter = counter + 6 ;
i = counter ;

zoiets
.

Acties:
  • 0 Henk 'm!

  • jeroen vrij
  • Registratie: Februari 2016
  • Laatst online: 09-05-2022

jeroen vrij

Just a arduino noob

Topicstarter
Ik ben aan het testen of ik met 6 schuifregisters een 6x6x6 rgb aan kan sturen.
Door te switchen tussen rood groen blauw.
Door 3 pinnen van een arduino mosfets te laten aansturen die zeg maar de connectie tussen de kleuren bediend
Morgen komen mijn arduino, s dus kan ik wat gaan oefenen.

[ Voor 11% gewijzigd door jeroen vrij op 24-03-2019 23:43 ]


Acties:
  • 0 Henk 'm!

  • kitao
  • Registratie: Juli 2012
  • Laatst online: 14:11
Ik zou dan eerst met één beginnen om te kijken hoe het in mekaar steekt en dan verder gaan knopen.
Maar daarmee bedoel ik niet dat jij dat ook zo moet doen.

Acties:
  • 0 Henk 'm!

  • jeroen vrij
  • Registratie: Februari 2016
  • Laatst online: 09-05-2022

jeroen vrij

Just a arduino noob

Topicstarter
Heb het al met knoppen op mijn breadboard gedaan.
Dat gaat op zich goed.
Kost alleen aardig wat mosfets kom ik achter
Min 21

Ik heb ze allebei op de git hub gezet zowel voor alleen arduino en met transistors.

[ Voor 28% gewijzigd door jeroen vrij op 25-03-2019 00:03 ]


Acties:
  • 0 Henk 'm!

  • kitao
  • Registratie: Juli 2012
  • Laatst online: 14:11
Ik heb ze bekeken, ziet er goed uit.
Inmiddels jouw schema

https://tweakers.net/ext/f/OMMwZXN7n74lWVyRV6gwMdYz/full.jpg

omgezet naar deze opstelling

Afbeeldingslocatie: https://i.imgur.com/qZqYSnL.jpg
klik

Als je een fout ziet laat het dan even weten svp.
Welk typenummer heb je voor de transistors ?

Acties:
  • 0 Henk 'm!

  • Vuikie
  • Registratie: December 2003
  • Laatst online: 20:40
@jeroen vrij is dit misschien iets? WS2812 Neopixels in 8mm LED-vorm. Dan heb je maar 1 pin nodig van de Arduino ;)

Acties:
  • 0 Henk 'm!

  • jeroen vrij
  • Registratie: Februari 2016
  • Laatst online: 09-05-2022

jeroen vrij

Just a arduino noob

Topicstarter
@kitao de bc547b heb ik voor de 3x3x3.
Maar volgens mijn is jouw schets met mosfets zo te zien.
Ik heb irl540 mosfets.
Ziet er goed uit de schets
Kan alleen de voeding van de arduino niet zien.
Ik geloof dat mosfets de ground moet delen met de arduino.
Waarom weet ik niet precies maar lees veel dat dat moet.

@Vuikie daar heb ik ook naar zitten kijken.
Die zijn adresseerbaar toch.
Zit dan alleen met de code schrijven.
Ik ben echt een leek wat dat betreft.
Als zo een cube maak moet ik al gebruikmaken van mosfets of transistors.
Omdat ik dat multiplexen nog niet voor elkaar krijg.
Zodat er maar 1 led per keer brand en dat het toch lijkt of er meer branden.

[ Voor 26% gewijzigd door jeroen vrij op 25-03-2019 09:11 ]


Acties:
  • +1 Henk 'm!

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 27-09 13:03
kitao schreef op zondag 24 maart 2019 @ 23:38:
Volgens mij hadden ze in basic daar een step functie voor, maar hier zal je het wrs met een extra counter moeten doen.
for (int i=1; i<=36; i++)
counter = counter + 6 ;
i = counter ;

zoiets
.
C++:
1
2
3
for (int i = 0; i <= 36; i += 6) {
    ...
}

Duidelijker nog imho:
C++:
1
2
3
for (int i = 0; i <= 6; ++i ) {
    // Do something with i * 6
}

Ligt het aan mij of is de prioriteit om fatsoenlijke code te schrijven niet al te hoog bij jullie? Even goede vrienden, maar in dat geval ga ik mijn energie aan iets anders besteden.... O-)

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


Acties:
  • 0 Henk 'm!

  • jeroen vrij
  • Registratie: Februari 2016
  • Laatst online: 09-05-2022

jeroen vrij

Just a arduino noob

Topicstarter
@farlane nou die is er zeker wel.
Alleen lukt mij dat niet altijd.
Zoals eerder in deze topic gemeld doe ik dit net een 3 weken.
En weet een hoop nog niet.
Mijn eerste prioriteit was de ledcube werkend te krijgen.
Dat is gelukt.
En nu bezig om de code een eind in te korten.
Met mijn code ben ik al van meer dan 500 regels terug naar 200.

Acties:
  • +1 Henk 'm!

  • kitao
  • Registratie: Juli 2012
  • Laatst online: 14:11
farlane schreef op maandag 25 maart 2019 @ 09:17:
[...]

C++:
1
2
3
for (int i = 0; i <= 36; i += 6) {
    ...
}

Duidelijker nog imho:
C++:
1
2
3
for (int i = 0; i <= 6; ++i ) {
    // Do something with i * 6
}

Ligt het aan mij of is de prioriteit om fatsoenlijke code te schrijven niet al te hoog bij jullie? Even goede vrienden, maar in dat geval ga ik mijn energie aan iets anders besteden.... O-)
Wmb ligt die prio niet al te hoog nee, maar zou jammer vinden als je daardoor geen tips meer zou geven.
Is namelijk zo dat ik code wil leren lezen maar niet perse zelf hoef te willen schrijven, gewoon wat dingen herkennen en evt daardoor wat kunnen aanpassen aan de eigen opstelling vind ik al ruim voldoende. Bovendien, ook na bijna drie maanden codes te bestuderen, vind ik mezelf nog steeds een beginner en dat zal afhangen per persoon hoe snel die de stof opneemt.
Dit stukje
for (int i = 0; i <= 36; i += 6) {
kan ik me niet herinneren ooit eerder te hebben gezien ondanks bijvoorbeeld 25 lessen op Tutorialspoint, stuk of 20 op Cplusplus, 13 video's van TPayne en 3.3 hoofdstukken van jouw boek.
Bij de code voor het ledklokje met schuifregister ben ik er wel intensief achter gaan zitten en naar mijn mening is die code geen zooitje, maar natuurlijk zijn alle suggesties ter verbetering altijd welkom.

Acties:
  • 0 Henk 'm!

  • jeroen vrij
  • Registratie: Februari 2016
  • Laatst online: 09-05-2022

jeroen vrij

Just a arduino noob

Topicstarter
Ik heb ze geüpdate bijde variante staan er op.
https://github.com/JeroenVrij/3x3x3-cube-under-const

Acties:
  • 0 Henk 'm!

  • kitao
  • Registratie: Juli 2012
  • Laatst online: 14:11
jeroen vrij schreef op maandag 25 maart 2019 @ 08:45:
@kitao de bc547b heb ik voor de 3x3x3. Maar volgens mijn is jouw schets met mosfets zo te zien.
Ik heb irl540 mosfets. Ziet er goed uit de schets
Kan alleen de voeding van de arduino niet zien. Ik geloof dat mosfets de ground moet delen met de arduino. Waarom weet ik niet precies maar lees veel dat dat moet.

@Vuikie daar heb ik ook naar zitten kijken.
Die zijn adresseerbaar toch.
Zit dan alleen met de code schrijven.
Ik ben echt een leek wat dat betreft.
Als zo een cube maak moet ik al gebruikmaken van mosfets of transistors.
Omdat ik dat multiplexen nog niet voor elkaar krijg.
Zodat er maar 1 led per keer brand en dat het toch lijkt of er meer branden.
Jouw uitleg over ground klinkt niet onbekend maar maakt zover ik gezien heb in simu geen verschil, idem de 5v rail. Maar goed dat je het zegt, de meeste hier zullen niet met een nep-uno bezig zijn. Ik kreeg aanvankelijk de mosfets niet aan de gang, ook omdat ik er geen passende code voor had en als je gaat zoeken hoe de drie steeltjes aangesloten moeten worden dan krijg je meteen hele lappen theorie over wat er in dat zwarte blokje zit. Een afbeelding geeft dan sneller overzicht. Wordt veel met RGB-led-strips gebruikt zag ik. Was zelf al half overgestapt op een normale transistor, dat ging eenvoudiger.

Afbeeldingslocatie: https://i.imgur.com/yhsp0LN.jpg?1

Schakeling opgebroken om te testen met eenvoudige code voor 2 ledjes.
Je zou je schema tekening er ook bij kunnen zetten ?
Ziet er prima uit de code, ik ga de mos met 547's vervangen.

In simu heb je geen typenummers maar kan je enkel instellen of het pnp of npn is.
Het enige overgebleven keuzevakje is voor gain, die staat standaard op 100 zonder eenheid te vermelden.
Nou kijk ik in de datasheet
https://www.farnell.com/datasheets/410427.pdf
en met ctr+f+gain krijg ik twee treffers

1. DC Current Gain hFE IC = 2mA, VCE = 5V 200 ********* op pag 2.
2. Small Signal Current Gain hfe Typical 330 *************** op pag 3.

Ik heb voor de eerste gekozen en de gain op 200 gezet. (?)
.

[ Voor 22% gewijzigd door kitao op 25-03-2019 18:55 ]


Acties:
  • 0 Henk 'm!

  • jeroen vrij
  • Registratie: Februari 2016
  • Laatst online: 09-05-2022

jeroen vrij

Just a arduino noob

Topicstarter
Als je hem rechtop zet met het dak je omhoog
Is rechts de input( collector) het dakje naar de arduino (base) en links de uitput (emmiter).

Acties:
  • 0 Henk 'm!

  • kitao
  • Registratie: Juli 2012
  • Laatst online: 14:11
jeroen vrij schreef op maandag 25 maart 2019 @ 18:50:
Als je hem rechtop zet met het dak je omhoog
Is rechts de input( collector) het dakje naar de arduino (base) en links de uitput (emmiter).
Ik heb dit ervan gemaakt, klopt het zo ?

Afbeeldingslocatie: https://i.imgur.com/fv6FAq6.jpg
klik+klik

Acties:
  • 0 Henk 'm!

  • jeroen vrij
  • Registratie: Februari 2016
  • Laatst online: 09-05-2022

jeroen vrij

Just a arduino noob

Topicstarter
Ja helemaal TOP!!

Weet iemand dit.
heb nu een int count = 0;
Staat nog voor de setup helemaal bovenaan

En gebruik dan deze in de loop.

for (count=0;count<36;count++)

Bij me 3x3x3 werkt hij perfect komt gewoon door de compile.
Maar ik met shifty.h libery erin werk zegt de compile count does not name a type

Acties:
  • 0 Henk 'm!

  • kitao
  • Registratie: Juli 2012
  • Laatst online: 14:11
jeroen vrij schreef op maandag 25 maart 2019 @ 19:49:
Ja helemaal TOP!!

Weet iemand dit.
heb nu een int count = 0;
Staat nog voor de setup helemaal bovenaan

En gebruik dan deze in de loop.

for (count=0;count<36;count++)

Bij me 3x3x3 werkt hij perfect komt gewoon door de compile.
Maar als ik met shifty.h libery erin werk zegt de compile count does not name a type
Bedankt :)
En nee dat weet ik helaas niet maar vermoed dat je op het juiste spoor zit en dat de lib roet in het eten gooit.
Ik heb jouw code ..
https://github.com/Jeroen...aster/3x3x3%20Transistors
.. erin gezet en alle leds komen mooi bij, dus dat is prima.
Maar het patroon lijkt minder geslaagd, ....

***Ik moet de lap herstarten, staat hier op instorten***

Ok, daar ben ik weer.
Patroon is een hele rij tegelijk , na lange pauze gaat rijtje uit en de ander weer aan.
Maar de code werkt en dat is al 85% project geslaagd, rest is enkel wat bijstellen.
En je bent al bezig met de volgende dus geef je groot gelijk als je dat afstellen achterwege laat.
jeroen vrij schreef op maandag 25 maart 2019 @ 20:38:
Ja kan kloppen heb hem net geüpdate

Moest wel zijn zoals ik had gestuurd.
Moest daaronder zijn
digitalWrite(All[counter], high;

Ik was de [.] vergeten

Hij zou drie effecten moeten hebben.
Eerst gaan er willekeurig leds branden.
Daarna een soort knightrider van laag naar laag.
Maar die deed het waarschijnlijk niet goed.

Daarna zouden ze laag voor laag moeten gaan.
Maar misschien zijn de delays te kort dat je ze niet ziet.
Ok, dan zet ik die erin.
.

[ Voor 34% gewijzigd door kitao op 25-03-2019 20:52 ]


Acties:
  • 0 Henk 'm!

  • jeroen vrij
  • Registratie: Februari 2016
  • Laatst online: 09-05-2022

jeroen vrij

Just a arduino noob

Topicstarter
Ja kan kloppen heb hem net geüpdate

Moest wel zijn zoals ik had gestuurd.
Moest daaronder zijn
digitalWrite(All[counter], high;

Ik was de [.] vergeten

Hij zou drie effecten moeten hebben.
Eerst gaan er willekeurig leds branden.
Daarna een soort knightrider van laag naar laag.
Maar die deed het waarschijnlijk niet goed.

Daarna zouden ze laag voor laag moeten gaan.
Maar misschien zijn de delays te kort dat je ze niet ziet.

2.0 moet je nemen.
Wel jammer dat ik hem niet kan zien.
Dan kan ik zien wat er niet goed gaat

[ Voor 57% gewijzigd door jeroen vrij op 25-03-2019 20:58 ]


Acties:
  • +1 Henk 'm!

  • kitao
  • Registratie: Juli 2012
  • Laatst online: 14:11
Het gaat al een heel stuk beter hoor, de toegevoegde effecten zijn nu goed zichtbaar.

https://github.com/Jeroen...3x3x3%20transistors%202.0

Misschien iets terzijde, vorige discussie ging o.a. over missing links en dat gebeurt nu dus net zo goed.
Wat de delays betreft, ik ben er nog niet helemaal uit wat de simu nog in beeld kan krijgen maar weet inmiddels uit ervaring dat 100ms geen enkel probleem geeft bij het zien van knipper-leds en bij een circuit speed van 1.000.000
Zal morgen nog eens testen wat de code zo'n beetje doet en met de delays wat draaien.

Knap gemaakt Jeroen, dit is helemaal niet zo makkelijk om draaiend te krijgen maar het is je gelukt.

O ja, ik weet amper hoe je YT-video's maakt dus kan het niet in beeld delen.
.

[ Voor 5% gewijzigd door kitao op 25-03-2019 21:17 ]


Acties:
  • 0 Henk 'm!

  • jeroen vrij
  • Registratie: Februari 2016
  • Laatst online: 09-05-2022

jeroen vrij

Just a arduino noob

Topicstarter
Dank je wel.
Ik laat het afstellen niet achterwegen dat kan ik pas doen als me arduino er is.
Zou vandaag komen maar heb geen bezorger gezien.
Zonder dat ding kan ik niet zien hoe en wat ik af moet stellen.
No probleem. Zou ook niet weten hoe je die video's maakt haha.
Ben nu weer iets aan uit zoeken.
Heb in een blok met een for loop die een random number pakt.
Maar nu wil ik dat nummer steeds meenemen naar het volgende blok als previous number
Dus druk het internet aan het af speuren

Heb al een oplossing denk ik.

code:
1
2
3
4
5
6
7
8
 for (int i = 0; i <= 250; i++) 
 {
  randNumber1 = random(1, 36);
  shift.writeBit(randNumber1, HIGH);
  randNumber2 = random(100,1000);
  delay(randNumber2);
  shift.writeBit(randNumber1, LOW);
 }


Zag dat de timer op 30ms stond dat is wel heel snel zal hem even updaten.

[ Voor 58% gewijzigd door jeroen vrij op 25-03-2019 22:36 ]


Acties:
  • 0 Henk 'm!

  • kitao
  • Registratie: Juli 2012
  • Laatst online: 14:11
jeroen vrij schreef op maandag 25 maart 2019 @ 21:32:
Dank je wel.
Ik laat het afstellen niet achterwegen dat kan ik pas doen als me arduino er is.
Zou vandaag komen maar heb geen bezorger gezien.
Zonder dat ding kan ik niet zien hoe en wat ik af moet stellen.
No probleem. Zou ook niet weten hoe je die video's maakt haha.
Ben nu weer iets aan uit zoeken.
Heb in een blok met een for loop die een random number pakt.
Maar nu wil ik dat nummer steeds meenemen naar het volgende blok als previous number
Dus druk het internet aan het af speuren

Heb al een oplossing denk ik.

code:
1
2
3
4
5
6
7
8
 for (int i = 0; i <= 250; i++) 
 {
  randNumber1 = random(1, 36);
  shift.writeBit(randNumber1, HIGH);
  randNumber2 = random(100,1000);
  delay(randNumber2);
  shift.writeBit(randNumber1, LOW);
 }


Zag dat de timer op 30ms stond dat is wel heel snel zal hem even updaten.
Zet svp de nieuwe revisie er gewoon naast want geen link blijft heel zo en niemand kan nog zien hoe je jouw code hebt ontwikkeld. waar bemoei ik me mee

Ik zit nu net even te kijken maar slechts vluchtig.
bijv regel 1-9

const int pinArray0[] ={2, 3, 4, 5, 6, 7, 8, 9, 10};
regel 10
const int pinArray9[] ={2, 3, 4, 5, 6, 7, 8, 9};

Lijkt erop dat array 'member' 10 hier weggevallen is en dat zag ik volgens mij ook in beeld, laatste kolom leds bleven in het begin uit.

Regel 127
code:
1
2
3
4
5
6
randNumber = random(1, 9);
  Kolom(randNumber);
  randNumber = random(1, 3);
  Layer(randNumber);
  randNumber = random(10 || 100);
  delay(randNumber);


Moet dat || geen komma zijn ?
En delay(randNumber); kan dan wrs ook gauw delay(10); worden of daaromtrent, is dat de bedoeling ?

Dacht ook nog even dat je mss over het hoofd had gezien dat het eerste element van een array niet het aanroep nummer 1 maar 0 heeft, maar ik geloof dat ik me met deze nachtogen daarin heb vergist.

Vervelend als je niet kunt testen want dat maakt het afstellen wel lastig. Met een twee-leds blink opstelling hou ik het op 50ms wat de simu nog helder in beeld brengt, daaronder vervaagt het. In het echt zal dit wrs nog iets minder zijn ?
.

[ Voor 6% gewijzigd door kitao op 26-03-2019 07:55 ]


Acties:
  • 0 Henk 'm!

  • jeroen vrij
  • Registratie: Februari 2016
  • Laatst online: 09-05-2022

jeroen vrij

Just a arduino noob

Topicstarter
Pin Array0 bevat pin 2-9
Pin Array 1 bevat pin 3-9

Void Kolom(1) bevat
Pin 2 high
Pin array 1 low dus 3-9

Kolom(9) is
Pin 10 high
Pin array 9 low pin 2-9

code:
1
2
3
4
5
6
7
8
9
case 1:
  digitalWrite(2, HIGH);      
  digitalWrite(pinArray1[8], LOW); alles behalve 2
 break;
 case 2:
  digitalWrite(3, HIGH);
  digitalWrite(pinArray2[8], LOW); alles behalve 3

 Enz..


De || had ik al gewijzigd in de nieuwe

[ Voor 107% gewijzigd door jeroen vrij op 26-03-2019 08:55 ]


Acties:
  • 0 Henk 'm!

  • kitao
  • Registratie: Juli 2012
  • Laatst online: 14:11
De arrays was mijn fout, sorry als ik je evt op dwaalspoor heb gezet. Zo te zien hoort dat zo en slaat die steeds een nummer over, behalve dan A5, die heeft 2 x 3 ?
code:
1
2
3
4
5
6
7
8
9
10
const int pinArray0[] ={2, 3, 4, 5, 6, 7, 8, 9, 10};
const int pinArray1[] ={3, 4, 5, 6, 7, 8, 9, 10};
const int pinArray2[] ={2, 4, 5, 6, 7, 8, 9, 10};
const int pinArray3[] ={2, 3, 5, 6, 7, 8, 9, 10};
const int pinArray4[] ={2, 3, 4, 6, 7, 8, 9, 10};
const int pinArray5[] ={2, 3, 3, 5, 7, 8, 9, 10};
const int pinArray6[] ={2, 3, 4, 5, 6, 8, 9, 10};
const int pinArray7[] ={2, 3, 4, 5, 6, 7, 9, 10};
const int pinArray8[] ={2, 3, 4, 5, 6, 7, 8, 10};
const int pinArray9[] ={2, 3, 4, 5, 6, 7, 8, 9};

Jouw nieuwe versie is qua led-beeld geen verbetering hier maar ik zal een nieuwe resp op git zetten en dan jouw vorige rev. waar ik mee bezig ben en dan jouw nagetekende schema erbij. Ik laat het weten als dat erop staat.

Nou, niet alles loopt in de soep, start enkelt traag op en daarna komen de effecten en die zijn goed gelukt.
Zie wel dat random alleen per rij gaat en niet door de drie rijen heen.
.

[ Voor 11% gewijzigd door kitao op 26-03-2019 09:01 ]


Acties:
  • 0 Henk 'm!

  • jeroen vrij
  • Registratie: Februari 2016
  • Laatst online: 09-05-2022

jeroen vrij

Just a arduino noob

Topicstarter
Dat zit wel fout ja en als dat niet goed is loopt alles in de soep haha

Heb er een hele grote fout uit gehaald.
Haha
Dat ik die niet gezien heb.
Had bij dat 2e effect steeds pinarray0 gezet
Maar daar moest hij Kolom voor Kolom aan zetten.
Heb een nieuwe op de git gezet.

[ Voor 59% gewijzigd door jeroen vrij op 26-03-2019 09:13 ]


Acties:
  • 0 Henk 'm!

  • kitao
  • Registratie: Juli 2012
  • Laatst online: 14:11
jeroen vrij schreef op dinsdag 26 maart 2019 @ 08:58:
Dat zit wel fout ja en als dat niet goed is loopt alles in de soep haha

Heb er een hele grote fout uit gehaald.
Haha
Dat ik die niet gezien heb.
Had bij dat 2e effect steeds pinarray0 gezet
Maar daar moest hij Kolom voor Kolom aan zetten.
Heb een nieuwe op de git gezet.

https://github.com/JeroenVrij/3x3x3-cube-under-const
Vorige rev-rev staat er nu ook.

https://github.com/Alectus/Led-NPN-Cube

Ik heb linkjes naar de hoofdmappen gezet want als je naar de file linkt en je vervangt die dan is de link kaput.

De twee die je nu erop heb staan lopen hier niet, ja, ik zie eén rij ledjes traag bijkomen en that's it.
De tot nu toe beste, jouw vorige rev-rev-rev, staat bij mij op de Git met titel Led_NPN.ino en die ga ik proberen verder te reviseren en mocht dat lukken dan zet ik die ernaast.

Heb me vergist, deze is de beste
Led_NPN_Rev3.ino.ino
Die staat er nu naast en is een 100% kopie van jouw revisie met effecten erin.
.

[ Voor 25% gewijzigd door kitao op 26-03-2019 10:42 ]


Acties:
  • 0 Henk 'm!

  • jeroen vrij
  • Registratie: Februari 2016
  • Laatst online: 09-05-2022

jeroen vrij

Just a arduino noob

Topicstarter
Ok top heb zojuist een andere eropgezet omdat ik nog veel foutjes zag.

Acties:
  • 0 Henk 'm!

  • ronaldmathies
  • Registratie: Juni 2001
  • Niet online
Grappig, ik heb zelf drie weken terug een 4x4x3 led kubus gemaakt als experiment, hierbij heb ik gebruik gemaakt van een SN74HC595 shift register om de leds aan te sturen via SPI, wat het geheel wat makkelijk maakt en code technisch een stuk kleiner.

Mijn volgende project waar ik nu mee bezig ben is een RGB led kubus vam 8x8x8 in combinatie met TLC5940 shift registers om alle leds aan te sturen. Voordeel is dat je dan alle leds met maar een paar weerstanden kan regelen.

Ik zal wanneer ik thuis ben (zit nu in china) eens een aantal foto’s uploaden om de kubus te laten zien met de PCB van de 4x4x3. Samen met de code om de boel aan te sturen. Project was gedaan met een esp8244 (nodemcuj maar kan ook met een atmega328p

Heb een paar foto’s op mijn telefoon staan:

Afbeeldingslocatie: https://tweakers.net/ext/f/Per2CNT9Ume0gmBqzl1PM0tj/medium.jpg

Afbeeldingslocatie: https://tweakers.net/ext/f/0gZtkmIW6somRL1iOha8LrWs/medium.jpg

Afbeeldingslocatie: https://tweakers.net/ext/f/MW9hNHaXs2uzSK8WDhnnJ68q/medium.jpg

[ Voor 26% gewijzigd door ronaldmathies op 26-03-2019 11:59 ]

3015 Wp-z 5360 Wp-nno op 2 x SMA-SB3600 TL-21, Warmtepomp: ERSC-VM2CR2 / PUHZ-SHW140 YHA, WTW Q350, EV Kia Ev6 GT-Line


Acties:
  • 0 Henk 'm!

  • kitao
  • Registratie: Juli 2012
  • Laatst online: 14:11
Prima toevoeging Ronald, ik/we zien het graag tegemoet :)

Jeroen,
ik ben bezig met het array gedeelte en zie
code:
1
2
3
4
5
const int pinArray1[] ={3, 4, 5, 6, 7, 8, 9, 10};
// *****************************************************************
case 1:
  digitalWrite(2, HIGH);
  digitalWrite(pinArray2[8], LOW);

Wil je met die laatste instructie pin 3-10 allemaal tegelijk laag zetten ?
Zo ja, dat gaat zo niet volgens mij, dat gaat per stuk als ik me niet vergis.
code:
1
2
3
4
case 1:
  digitalWrite(2, HIGH);
  for (int i = 0 ; i < 8 ; i++ )              // toegevoegd 
  digitalWrite(pinArray1[i], LOW);  //  vervangen digitalWrite(pinArray1[8], LOW);

En element 8 bestaat niet, die valt over de eindrand heen want de 8 array- elementen hebben een index vanaf 0 t/m 7.

Met bovenstaande wijziging en void loop mini gemaakt gaan led 3 en 6 blinken.
code:
1
2
3
4
5
6
7
8
void loop() // *********************************************************
{
//   ******************************         for ( int i = 1 ; i < 10 ; i++ ) 
Kolom(1); Layer(1);
delay (1000);
Kolom(2); Layer(1);
delay (1000);
}


Mooie foto's Ronald, heel professioneel
En een passende code erbij zou helemaal tof zijn :)

Jeroen
Staat hier nou -1 ?

random()
Returns
A random number between min and max-1 (long) .

https://www.arduino.cc/re...ns/random-numbers/random/
.

[ Voor 29% gewijzigd door kitao op 26-03-2019 13:27 ]


Acties:
  • 0 Henk 'm!

  • jeroen vrij
  • Registratie: Februari 2016
  • Laatst online: 09-05-2022

jeroen vrij

Just a arduino noob

Topicstarter
Waar staat-1 bij de count ja.
Als de counter ++ heeft staat er bij de 2e digitalWrite +1
En bij de - - counter - 1

Ik stop met schrijven tot mijn arduino er is.
Want creëer nu een berg ellende blijkbaar.
Dus vind het wel even mooi geweest.
Ga eerst alle issues eruit halen en uitzoeken.

Ik onderstaand allemaal zo.
Dan kunnen alle pinArrays weg.
code:
1
2
3
4
5
6
7
8
9
10
case 7:
  digitalWrite(8, HIGH);
  for (int i = 2; i <= 7; i++)
 {
  digitalWrite(i, LOW);
 }
 for (int i = 8; i <= 10; i++)
 {
  digitalWrite(i, LOW);
 }

[ Voor 37% gewijzigd door jeroen vrij op 26-03-2019 13:52 ]


Acties:
  • 0 Henk 'm!

  • kitao
  • Registratie: Juli 2012
  • Laatst online: 14:11
Nou hier staat het dat -1 gebeuren, op regel 3 heb ik 9 naar 10 gezet.
code:
1
2
3
4
5
6
7
Layer(1);
    for (int i = 1; i <= 27 ; i++){   // for (int i = 0; i <= 250; i++) {
randNumber = random(1, 10);           //     randNumber = random(1, 9);
Kolom(randNumber);                    //     Kolom(randNumber);
                                      //     randNumber = random(10,100);
delay(100);                           //     delay(randNumber);
 }


Heb zelf ook berg puinhoop gemaakt, vanaf begin zat de hele tweede rij van 9 leds niet aangesloten.
Dat leek maar zo maar hingen los, vandaar al die volt vergrootglazen.
Heb deze net toegevoegd, zoveel mogelijk jouw code in stand gehouden en/of als comment behouden.
Led_NPN_Rev3_Klad.ino

Gaat dus om een tussenfase, geen eind afronding.

Afbeeldingslocatie: https://i.imgur.com/ufm69NB.jpg
klik+klik

En waarom de transistor op pin 12 geel kleurt ben ik nog niet uit.
Zag het ook bij de mosfet-opstelling maar nog geen systeem daarin kunnen vinden voor de verkleuring.
.

[ Voor 10% gewijzigd door kitao op 26-03-2019 14:49 ]


Acties:
  • 0 Henk 'm!

  • jeroen vrij
  • Registratie: Februari 2016
  • Laatst online: 09-05-2022

jeroen vrij

Just a arduino noob

Topicstarter
jeroen vrij schreef op dinsdag 26 maart 2019 @ 13:29:
Waar staat-1 bij de count ja.
Als de counter ++ heeft staat er bij de 2e digitalWrite +1
En bij de - - counter - 1

Ik stop met schrijven tot mijn arduino er is.
Want creëer nu een berg ellende blijkbaar.
Dus vind het wel even mooi geweest.
Ga eerst alle issues eruit halen en uitzoeken.

Ik onderstaand allemaal zo.
Dan kunnen alle pinArrays weg.
code:
1
2
3
4
5
6
7
8
9
10
case 7:
  digitalWrite(8, HIGH);
  for (int i = 2; i <= 7; i++)
 {
  digitalWrite(i, LOW);
 }
 for (int i = 8; i <= 10; i++)
 {
  digitalWrite(i, LOW);
 }
Ik krijg het zo niet door de compile

Acties:
  • 0 Henk 'm!

  • jeroen vrij
  • Registratie: Februari 2016
  • Laatst online: 09-05-2022

jeroen vrij

Just a arduino noob

Topicstarter
kitao schreef op dinsdag 26 maart 2019 @ 14:43:
Nou hier staat het dat -1 gebeuren, op regel 3 heb ik 9 naar 10 gezet.
code:
1
2
3
4
5
6
7
Layer(1);
    for (int i = 1; i <= 27 ; i++){   // for (int i = 0; i <= 250; i++) {
randNumber = random(1, 10);           //     randNumber = random(1, 9);
Kolom(randNumber);                    //     Kolom(randNumber);
                                      //     randNumber = random(10,100);
delay(100);                           //     delay(randNumber);
 }


Heb zelf ook berg puinhoop gemaakt, vanaf begin zat de hele tweede rij van 9 leds niet aangesloten.
Dat leek maar zo maar hingen los, vandaar al die volt vergrootglazen.
Heb deze net toegevoegd, zoveel mogelijk jouw code in stand gehouden en/of als comment behouden.
Led_NPN_Rev3_Klad.ino

Gaat dus om een tussenfase, geen eind afronding.

[Afbeelding]
klik+klik

En waarom de transistor op pin 12 geel kleurt ben ik nog niet uit.
Zag het ook bij de mosfet-opstelling maar nog geen systeem daarin kunnen vinden voor de verkleuring.
.
LOL ik wel kijk maar eens op je volt meter 410volt haha.

Zou de weerstand proberen te veranderen 10kohm bij de kathodes proberen net zolang tot je 5v overhoud.

[ Voor 3% gewijzigd door jeroen vrij op 26-03-2019 16:22 ]


Acties:
  • +1 Henk 'm!

  • kitao
  • Registratie: Juli 2012
  • Laatst online: 14:11
Nee, dat staat er niet.
Klik eens op het plaatje , je komt dan in imgur, kan je er nog een keer op klikken.
De gele transistor heeft 4.83V en de witte transistor op pin 9 heeft 5V dus waarom is de ene verkleurd en de ander niet ? Maar ben inmiddels ook ermee gestopt, morgen nog een dag.

Bekijk jouw code Rev3_Klad nog maar eens die ik gelinkt en slechts een klein beetje heb bijgewerkt dat nu nog te overzien valt omdat ik de void loop in stukken heb gedeeld waar het overgrote deel er nog van actief gemaakt moet worden.

Wat de -1 betreft, random() heeft de syntax random( min , max)
Maar als je opgeeft random ( 1, 9 ) dan gaat die randommen vanaf en inclusief 1 maar tot en exclusief 9.
Oftewel 9 zal het nooit worden, zo heb ik de reference althans begrepen.

En ik wil ook toevoegen, ik probeer niemand te overtreffen, zelfs niet eens zozeer te helpen maar jij hebt gewoon leuke projecten en zelf zou ik niet beginnen aan het geheel programmeren daarvan, met als uitzondering het vorige schuif-klokje waar ik nu nog van aan het bijkomen ben en die trouwens ook begon na een post van jou over een led klok.
Dus maw, zonder jouw al geschreven code was het voor mij geen aanleiding er tijd aan te besteden.
Dus dank daarvoor en bovendien is het in het echt veel moeilijker omdat niemand twaalf voltmeters op tafel heeft liggen om alle pin signalen tegelijk in beeld te krijgen.
.

[ Voor 9% gewijzigd door kitao op 26-03-2019 16:50 ]


Acties:
  • 0 Henk 'm!

  • jeroen vrij
  • Registratie: Februari 2016
  • Laatst online: 09-05-2022

jeroen vrij

Just a arduino noob

Topicstarter
@ronaldmathies
Hoi Ronald.
Zie jou bericht net pas.
Maar ziet er goed uit.
Ik probeer hem eerst op een arduino draaiende te krijgen.
Ben pas net begonnen met code schrijven en. Moet nog veel leren.
En al wel bezig met shiftregisters een code te schrijven.
Ik gebruik daarvoor shifty.h
Zo kan ik gewoon de shiftregisters aansturen met de digitalWrite manier.

Maar tips omtrent de codes zijn altijd welkom.

Acties:
  • 0 Henk 'm!

  • kitao
  • Registratie: Juli 2012
  • Laatst online: 14:11
Lijkt erop dat Ronald een professionele ontwerper is.

Dit blokje van jouw code inmiddels ook getest, het zijn net pingpong ballen, geeft gaaf effect.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
void loop(){

for (int i = 0; i <= 27 ; i++);       // for (int i = 0; i <= 250; i++);
 {
randNumber = random(1, 10);           // randNumber = random(1, 9);
Kolom(randNumber);                    //  Kolom(randNumber);
randNumber = random(1, 4);            //  randNumber = random(1, 3);
Layer(randNumber);                    //  Layer(randNumber);
                                      //  randNumber = random(10 , 100);
delay(100);                           //  delay(randNumber);
}

} // void loop eind haakje
.

[ Voor 80% gewijzigd door kitao op 26-03-2019 22:32 ]


Acties:
  • 0 Henk 'm!

  • jeroen vrij
  • Registratie: Februari 2016
  • Laatst online: 09-05-2022

jeroen vrij

Just a arduino noob

Topicstarter
Ahhh ok.

Haha.
Ik ben nu even van alle effecten losse ino's aan het maken kan ik ze straks makkelijker testen.
Maak ze eerst voor de arduino zonder transistors en ga van uit daar verder bouwen.

OK beter ja dat was ook bedoeling.
Was de delay ook verschillend¿

Ik heb alle effecten tot nu ook op me git gezet.
Mocht je die willen gebruiken moet je alleen ff die code erin zetten van high is low en andersom.
Want is nu gebaseerd op arduino alleen.
Zijn grove codes ga nog bedenken hoe ze kleiner te maken

Deze is al omgezet
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
///fireworks with transistors/////
int count = 0;
long randNumber;
long randNumber1;
long randNumber2;
long randNumber3;
  

void setup()
{ 
 for (int i = 0; i <= 13; i++) 
 {
  pinMode(i, OUTPUT);
 }
 for (int i = 11; i <= 13; i++) 
 {
  digitalWrite(i, LOW);
 }
  randomSeed(analogRead(0));
}
void loop()
{ 
  for (int i = 0; i <= 20; i++) 
 {
  randNumber = random(2, 10);
  digitalWrite(randNumber, HIGH);
  digitalWrite(11,HIGH);
  delay(400);
  digitalWrite(11, LOW);
  digitalWrite(12,HIGH);
  delay(400);
  digitalWrite(12, LOW);
  digitalWrite(13,HIGH);
  digitalWrite(randNumber, LOW);
  randNumber = random(2, 10);
  digitalWrite(randNumber, HIGH);
  delay(200);
  digitalWrite(randNumber, LOW);
  randNumber = random(2, 10);
  digitalWrite(randNumber, HIGH);
  delay(200);
  digitalWrite(randNumber, LOW);
  randNumber = random(2, 10);
  digitalWrite(randNumber, HIGH);
  delay(200);
  digitalWrite(randNumber, LOW);
  randNumber = random(2, 10);
  digitalWrite(randNumber, HIGH);
  delay(200);
  digitalWrite(randNumber, LOW);
  digitalWrite(13, LOW);
  digitalWrite(12, HIGH);
  randNumber = random(2, 10);
  digitalWrite(randNumber, HIGH);
  delay(200);
  digitalWrite(randNumber, LOW);
  randNumber = random(2, 10);
  digitalWrite(randNumber, HIGH);
  delay(200);
  digitalWrite(randNumber, LOW);
  randNumber = random(2, 10);
  digitalWrite(randNumber, HIGH);
  delay(200);
  digitalWrite(randNumber, LOW);
  randNumber = random(2, 10);
  digitalWrite(randNumber, HIGH);
  delay(200);
  digitalWrite(randNumber, LOW);
  digitalWrite(12, LOW);
  digitalWrite(11, HIGH);
  randNumber = random(2, 10);
  digitalWrite(randNumber, HIGH);
  delay(200);
  digitalWrite(randNumber, LOW);
  randNumber = random(2, 10);
  digitalWrite(randNumber, HIGH);
  delay(200);
  digitalWrite(randNumber, LOW);
  randNumber = random(2, 10);
  digitalWrite(randNumber, HIGH);
  delay(200);
  digitalWrite(randNumber, LOW);
  randNumber = random(2, 10);
  digitalWrite(randNumber, HIGH);
  delay(200);
  digitalWrite(randNumber, LOW);
  }
}

[ Voor 112% gewijzigd door jeroen vrij op 26-03-2019 22:26 ]


Acties:
  • +1 Henk 'm!

  • kitao
  • Registratie: Juli 2012
  • Laatst online: 14:11
jeroen vrij schreef op dinsdag 26 maart 2019 @ 20:10:

OK beter ja dat was ook de bedoeling.
Was de delay ook verschillend ?
Ik twijfel aan het effect van de delay als je die random 10 tot 100 meegeeft, ook al omdat het in het begin niet zo best liep en het hielp al helemaal niet toen ik de complete tweede strip los liet hangen zonder dat te merken. Hoewel, het kan ook gebeurd zijn tijdens het verslepen van de led set. Hoe dan ook, ik was aan het testen en wil niet teveel 'zwevende' factoren tegelijk in de test. Kan best zijn dat als het eenmaal een goed beeld oplevert ik dan toch de random delay terugzet.
Ik heb alle effecten tot nu ook op me git gezet.
Mocht je die willen gebruiken moet je alleen ff die code erin zetten van high is low en andersom.
Want is nu gebaseerd op arduino alleen.
Zijn grove codes ga nog bedenken hoe ze kleiner te maken
Ga ik bekijken, tnx

Acties:
  • 0 Henk 'm!

  • ronaldmathies
  • Registratie: Juni 2001
  • Niet online
kitao schreef op dinsdag 26 maart 2019 @ 19:53:
Lijkt erop dat Ronald een professionele ontwerper is.

Dit blokje van jouw code inmiddels ook getest, het zijn net pingpong ballen, geeft gaaf effect.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
void loop(){

for (int i = 0; i <= 27 ; i++);       // for (int i = 0; i <= 250; i++);
 {
randNumber = random(1, 10);           // randNumber = random(1, 9);
Kolom(randNumber);                    //  Kolom(randNumber);
randNumber = random(1, 4);            //  randNumber = random(1, 3);
Layer(randNumber);                    //  Layer(randNumber);
                                      //  randNumber = random(10 , 100);
delay(100);                           //  delay(randNumber);
}

} // void loop eind haakje
.
Haha, nee hoor. Ben pas sinds een maand of zeven bezig met Arduino en electronica. Software ontwikkelen doe ik al wel veel langer (beroeps matig).

Maar het valt opzich allemaal best mee, wat gewoon belangrijk is is veel inlezen op elk specifiek onderdeel. Dingen als jst transistors en mosfets begin ik ook pas net te begrijpen.

3015 Wp-z 5360 Wp-nno op 2 x SMA-SB3600 TL-21, Warmtepomp: ERSC-VM2CR2 / PUHZ-SHW140 YHA, WTW Q350, EV Kia Ev6 GT-Line


Acties:
  • 0 Henk 'm!

  • ronaldmathies
  • Registratie: Juni 2001
  • Niet online
jeroen vrij schreef op dinsdag 26 maart 2019 @ 19:46:
@ronaldmathies
Hoi Ronald.
Zie jou bericht net pas.
Maar ziet er goed uit.
Ik probeer hem eerst op een arduino draaiende te krijgen.
Ben pas net begonnen met code schrijven en. Moet nog veel leren.
En al wel bezig met shiftregisters een code te schrijven.
Ik gebruik daarvoor shifty.h
Zo kan ik gewoon de shiftregisters aansturen met de digitalWrite manier.

Maar tips omtrent de codes zijn altijd welkom.
Zoek eens op SPI en shift registers of SPI en een specifieke shift register. Dan kan je een hoop vinden, ook in combinatie met leds. DigitalWrite is aardig maar op een atmega328p enorm traag. Bij 16 ledjes is dit nog te doen, maar bij veel meer ledjes kost het zoveel tijd dat je niet voldoende schakelingen kan doen om vloeiende animaties te krijgen.

Bij een nodemcu is de digitalwrite een stuk sneller.

Een paar goede tutorials zijn die van kevin darrah op youtube. Die legt heel goed uit hoe je shift registers moet gebruiken en waarom op een bepaalde manier.

3015 Wp-z 5360 Wp-nno op 2 x SMA-SB3600 TL-21, Warmtepomp: ERSC-VM2CR2 / PUHZ-SHW140 YHA, WTW Q350, EV Kia Ev6 GT-Line


Acties:
  • 0 Henk 'm!

  • kitao
  • Registratie: Juli 2012
  • Laatst online: 14:11
ronaldmathies schreef op woensdag 27 maart 2019 @ 02:21:
Haha, nee hoor. Ben pas sinds een maand of zeven bezig met Arduino en electronica. Software ontwikkelen doe ik al wel veel langer (beroeps matig).

Maar het valt op zich allemaal best mee, wat gewoon belangrijk is is veel inlezen op elk specifiek onderdeel. Dingen als jst transistors en mosfets begin ik ook pas net te begrijpen.
In ieder geval heb je dan een mooie studio en materiaal :)

Heb zelf ook materiaal nodig , namelijk een Arduino debugger, die mis ik nu echt. Ze bestaan wel maar is nogal gedoe daar moet een echte Arduino bij aangesloten zijn geloof ik.
Vorige random pingpong-test samengesmolten met een twee-leds blinker maar de functie Kolom, of Layer, of beide, springen niet terug naar de random. Dacht eerst nog dat het te maken had met omdat Kolom en Layer beide int's zijn en random = long (int), dus heb ipv een random getal de vaste getallen 5 en 3 meegegeven bij het aanroepen. Maar mag niet baten, het random blokje gaat maar 1x ipv 250x en de 2-blink 3x, zoals het hoort. En of nu blink of random bovenaan of onderaan de void loop() staat maakt geen verschil.
Vreemd.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
void loop(){ // VL VL VL VL  VL VL VL VL  VL VL VL VL  VL VL VL VL

 for ( int i = 1 ; i <= 250 ; i++ ) {    // for (int i = 0; i <= 250; i++);

randNumber = random(1, 10);           // randNumber = random(1, 9);
Kolom(5);                    //  Kolom(randNumber);
randNumber = random(1, 4);            //  randNumber = random(1, 3);
Layer(3);                    //  Layer(randNumber);
                                      //  randNumber = random(10 , 100);
delay(100);                           //  delay(randNumber);
}
 
 
  for ( int i = 1 ; i < 4 ; i++ ) {   // ******* blink met twee leds *****************

Kolom(1); Layer(1);
delay (500);
Kolom(2); Layer(1);
delay (500);
}

} // void loop eind haakje  ////////////////////////////////////////////////////////

En zo doet die het wel, led K5L3 blijft nu 25 seconden branden, na het commenten van de twee randNumber regels, die toch al niets meer ter zake deden.
code:
1
2
3
4
5
6
7
8
9
 for ( int i = 1 ; i <= 250 ; i++ ) {    // for (int i = 0; i <= 250; i++);

// randNumber = random(1, 10);           // randNumber = random(1, 9);
Kolom(5);                    //  Kolom(randNumber);
// randNumber = random(1, 4);            //  randNumber = random(1, 3);
Layer(3);                    //  Layer(randNumber);
                                      //  randNumber = random(10 , 100);
delay(100);                           //  delay(randNumber);
}

Vreemd vreemd :?
.
*** uur later ***
Opgelost, maar geen oorzaak gevonden. Stapje voor stapje alles weer terug gezet zoals de code bovenin deze post, met de vaste getallen 5 en 3 weer tot random gemaakt en het gaat het nu ineens toch prima.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
void loop(){ // VL VL VL VL  VL VL VL VL  VL VL VL VL  VL VL VL VL

 for ( int i = 1 ; i <= 125 ; i++ ) {    // for (int i = 0; i <= 250; i++);

randNumber = random(1, 10);           // randNumber = random(1, 9);
Kolom(randNumber);                    //  Kolom(randNumber);
randNumber = random(1, 4);            //  randNumber = random(1, 3);
Layer(randNumber);                    //  Layer(randNumber);
                                      //  randNumber = random(10 , 100);
delay(100);                           //  delay(randNumber);
}
 
  for ( int i = 1 ; i < 4 ; i++ ) {   // ******* blink met twee leds *****************

Kolom(1); Layer(1);
delay (500);
Kolom(2); Layer(1);
delay (500);
}

} // void loop eind haakje  /////////////////////////////////////////////////
Niet te volgen dit.

*** uur later ***
Deze erbij gevoegd
code:
1
2
3
4
5
6
7
Layer(1);
    for (int i = 1; i <= 27 ; i++){   // for (int i = 0; i <= 250; i++) {
randNumber = random(1, 10);           //     randNumber = random(1, 9);
Kolom(randNumber);                    //     Kolom(randNumber);
                                      //     randNumber = random(10,100);
delay(100);                           //     delay(randNumber);
 }

Dat is random per rij (staat er hier maar één maar zijn er drie) en .... die wordt gewoon overgeslagen.
Dus Jeroen, als de code afgerond is dan kan het zijn dat codeblokjes met random erin niet pakken.
Waarom weet ik niet maar dat zie ik hier gebeuren.

Tussendoor wat meer op de save-knop drukken lijkt te helpen.
.

[ Voor 45% gewijzigd door kitao op 27-03-2019 07:25 ]


Acties:
  • 0 Henk 'm!

  • kitao
  • Registratie: Juli 2012
  • Laatst online: 14:11
Nieuwe post want de vorige zit vol.

De code is afgerond en staat op Git met titel Led_NPN_End.ino
https://github.com/Alectus/Led-NPN-Cube

Jeroen had er drie effecten ingestopt, één als looplicht per rij, een andere random door alles en nog een als random per rij. Tussen de drie effecten elk heb ik een twee-leds blink geplaatst zodat ik de overgangen beter kon zien. Het looplicht per rij heb ik ongewijzigd gelaten omdat dit toch al goed ging hoewel soms een ledje wat dimmer overkomt als de rest. Andere wijzigingen waren slechts miniem en slechts op enkele plekken nodig dus de code is niet mijn creatie maar die van Jeroen.

Verder staat er nog een tweede afbeelding bij en dat is deze ..

Afbeeldingslocatie: https://i.imgur.com/Y0ltbiR.jpg?1

.. maar dan wat groter en heeft de titel Led_NPN_2.jpg

Acties:
  • 0 Henk 'm!

  • jeroen vrij
  • Registratie: Februari 2016
  • Laatst online: 09-05-2022

jeroen vrij

Just a arduino noob

Topicstarter
Ziet er goed uit zeg.

Acties:
  • 0 Henk 'm!

  • kitao
  • Registratie: Juli 2012
  • Laatst online: 14:11
Tnx
Heb net Fire_Works_Test van jou erin gezet en die was meteen al bijna 100% perfect.

https://github.com/Alectus/Led-NPN-Cube

Bijna omdat zelfde als met gisteren, maar toen had je deze al geschreven, dat random max is max - 1.
Dus heb alle 10 door 11 vervangen en dat is het enige. Mooi patroon geeft het.

Knight rider test arduino loopt 1x van links naar rechts en stopt er dan mee maar dat niet alleen, het crasht heel mijn simulide en ik zeg dat niet zomaar want heb 2x opnieuw geprobeerd en daarna zelfs de lap herstart en vergeleken met een ander programma.

[ Voor 34% gewijzigd door kitao op 27-03-2019 14:38 ]


Acties:
  • 0 Henk 'm!

  • jeroen vrij
  • Registratie: Februari 2016
  • Laatst online: 09-05-2022

jeroen vrij

Just a arduino noob

Topicstarter
Probleem daar is denk ik dat in het eerste blok.
Telt hij omhoog.
Bij het 2e moet hij omlaag tellen maar er staat van 1 tot 11.
Die heb ik nu verander naar van 10 tot 1dus omgedraaid maar 1 eraf anders zet hij 11 high.
En het is arduino versie zal er ook ff een transistor versie opzetten.

Heb hem er op staan.

[ Voor 16% gewijzigd door jeroen vrij op 27-03-2019 15:41 ]


Acties:
  • 0 Henk 'm!

  • kitao
  • Registratie: Juli 2012
  • Laatst online: 14:11
Ik heb jouw Kn.Ri. deze keer niet bijgewerkt maar zelf geschreven, enige wat ik nog origineel van jou heb meegenomen is de void setup en ook wel jouw idee erachter en voorbeeld ervan bij het aan en uit zetten.
Mijn versie staat inmiddels op git, heet Knight_Rider_Alc_1.ino en is ruim voorzien van tekstregels en is getest.

https://github.com/Alectus/Led-NPN-Cube

Heeft drie patronen, 1 led per kolom , 3 leds per kolom en een blink alles.
Patroon 1 kreeg ik nog mooie helder gele leds bij 5V-rail maar bij patroon 2 en 3 worden die grijs.
De weerstanden naar de leds staan op 100 Ohm.
Rail op 10V gezet maar hielp niet echt en weet ook niet zeker of de bc547 en de leds dat aan kunnen maar zag geen vonken.
.

[ Voor 6% gewijzigd door kitao op 27-03-2019 17:08 ]


Acties:
  • 0 Henk 'm!

  • jeroen vrij
  • Registratie: Februari 2016
  • Laatst online: 09-05-2022

jeroen vrij

Just a arduino noob

Topicstarter
Bc547 kan volgens de data sheet 65ma aan dus drie leds moet gaan.
Ik heb zelf net een 3.3v voeding besteld.
Dan kan ik de weerstanden achterwegen laten

Acties:
  • 0 Henk 'm!

  • kitao
  • Registratie: Juli 2012
  • Laatst online: 14:11
Ja praktijk is anders als simu maar had toch iets meer licht verwacht met transistors en aparte voeding.
Maar kan niet voorspellen hoe dat in het echt uitpakt. Zelf gebruikte ik een regelbare voeding en dan kan je die voorzichtig wat hoger zetten. Zou toch in principe mogelijk moeten zijn om 27 ledjes tegelijk aan te zetten zonder 220V verlengkabels.

**

Van die 1 kolom per 1 laag heb ik me niet zo in verdiept maar bedankt voor de info, ook handig voor anderen natuurlijk. En het bleek in simu wel te kunnen, zelfs het blink alles, maar doffer als 1 led per kolom per rij, dat is zeker zo. En als je een schema hebt van de nieuwe kubus opstelling, hoeft niet helemaal netjes op ruitjespapier, stuur het maar gerust deze kant op.
.

[ Voor 38% gewijzigd door kitao op 27-03-2019 17:44 ]


Acties:
  • 0 Henk 'm!

  • jeroen vrij
  • Registratie: Februari 2016
  • Laatst online: 09-05-2022

jeroen vrij

Just a arduino noob

Topicstarter
Met 5v kan je niet drie dezelfde leds op drie lagen aan zetten omdat de weerstand maar voor 1 led is.
Dus zet je kolom1 aan kan je maar 1 layer tegelijk aan doen.
Daarom ben ik nu mijn leds in de cube aan het voorzien van eigen weerstanden.

Dus als ik het goed begrijp voert hij onderstaande code 3x uit.
Eerst laag 3 dan laag 2 dan laag1.
En dat komt omdat de hele code tussen de haakjes staat van de for loop heb ik dat goed.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
for (int i = 13 ; i > 10 ; i-- ) {          // Hoogste lus om de drie rijen om de beurt in beweging te krijgen.

      digitalWrite(i, HIGH);                //  andere twee rijen 12 en 11 waren al Low in set-up

 for (count = 2 ; count < 11 ; count++ ) {   // binnen lus 1 voor links naar rechts
  digitalWrite(count, HIGH);
  delay(t100);
  digitalWrite(count , LOW);
  delay(t100);
 }
 for (count = 10 ; count > 1 ; count-- ) {    // binnen lus 2 voor rechts naar links
  digitalWrite(count, HIGH);
  delay(t100);
  digitalWrite(count , LOW);
  delay(t100);
 }
 digitalWrite(i, LOW);            // de twee binnenste lussen zijn uitgevoerd, zet de rij i weer op 0
}

[ Voor 84% gewijzigd door jeroen vrij op 27-03-2019 20:24 ]


Acties:
  • 0 Henk 'm!

  • kitao
  • Registratie: Juli 2012
  • Laatst online: 14:11
jeroen vrij schreef op woensdag 27 maart 2019 @ 17:22:
Met 5v kan je niet drie dezelfde leds op drie lagen aan zetten omdat de weerstand maar voor 1 led is.
Dus zet je kolom1 aan kan je maar 1 layer tegelijk aan doen.
Daarom ben ik nu mijn leds in de cube aan het voorzien van eigen weerstanden.

Dus als ik het goed begrijp voert hij onderstaande code 3x uit.
Eerst laag 3 dan laag 2 dan laag1.
En dat komt omdat de hele code tussen de haakjes staat van de for loop heb ik dat goed.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
for (int i = 13 ; i > 10 ; i -- ) {         // Hoogste lus om de drie rijen om de beurt in beweging te krijgen.

      digitalWrite(i, HIGH);                //  andere twee rijen 12 en 11 waren al Low in set-up

 for (count = 2 ; count < 11 ; count++ ) {   // binnen lus 1 voor links naar rechts
  digitalWrite(count, HIGH);
  delay(t100);
  digitalWrite(count , LOW);
  delay(t100);
 }
 for (count = 10 ; count > 1 ; count-- ) {    // binnen lus 2 voor rechts naar links
  digitalWrite(count, HIGH);
  delay(t100);
  digitalWrite(count , LOW);
  delay(t100);
 }
 digitalWrite(i, LOW);            // de twee binnenste lussen zijn uitgevoerd, zet de rij i weer op 0
}

Met 5v kan je niet drie dezelfde leds op drie lagen aan zetten omdat de weerstand maar voor 1 led is.
Dus zet je kolom1 aan kan je maar 1 layer tegelijk aan doen.
Daarom ben ik nu mijn leds in de cube aan het voorzien van eigen weerstanden.
Ja, dat klopt. Een lus oftewel loop blijft lussen totdat de voorwaarde niet meer geldig is en dus had ik het volgens mij nog duidelijker kunnen schrijven als

for (int i = 13 ; i == 11 ; i -- ) { ... // Hoogste lus om de drie rijen om de beurt in beweging te krijgen.
..... doe iets
} // eindhaakje

ik noemde dat Hoogste lus want weet niet precies hoe het anders te noemen. Bovenste, Buitenste of Top-lus zou ook kunnen. Zolang i nog niet gelijk is aan 11 bij het aftellen laat het eindhaakje het programma weer terug springen naar boven waar de for lus begint.
En begint dan opnieuw waardoor Binnenlus 1 opnieuw wordt uitgevoerd, die gaat dan opnieuw lussen en daarna Binnenlus 2 hetzelfde. Dit heet nested loops op zn engels. Maar binnenlus 1 en 2 zijn niet genest, tenminste niet in elkaar maar zijn wel elk apart genest in de hoofdlus. En i kan je ieder getal geven , dus makkelijkste is dan om meteen de pin-nummer cijfers daarvoor te pakken. Dat geld ook voor count, dat is gewoon een andere naam voor i of j of enz. of beter gezegd, dat zijn allemaal integers waarbij de gegeven namen wijzen naar de adressen in het geheugen waarin de integers zich bevinden. Zo'n adres zijn getallen en valt voor een mens amper te herkennen of mee te werken daarom geven ze die een naam, zoals i of count.
Maar in het kort, zoek even op geneste loops en bekijk een paar voorbeelden.

Ik heb een testje opgezet, zie plaatje

Afbeeldingslocatie: https://i.imgur.com/Ce4iOiK.jpg
klik

Ik heb de waarden eronder gezet die ik aan de mos heb meegegeven en die van een datasheet geplukt waarvan ik denk dat het in de buurt komt want nog niet allemaal uitgezocht wat ze allemaal ook alweer betekenen. Maar het geeft goed licht, dat is wel zeker :)

De schakelaars onderaan kunnen ook arduino-pinnen zijn natuurlijk, maar mijn vraag is nu, hoe kan je de drie leds op een rij apart gaan aan - en uitzetten ?

https://learn.adafruit.com/rgb-led-strips?view=all

https://cdn-shop.adafruit.com/datasheets/irlb8721pbf.pdf
.
Testje was niet ver genoeg doorgetest, helaas.
Bij de vorige opstelling en met 5 leds in serie ging het licht al uit.
In stapjes met steeds een ledje erbij en wat meer Volts kwam ik uiteindelijk hier op uit :

Afbeeldingslocatie: https://i.imgur.com/HTNm48k.png?1

Auto-accu's voor nodig :|

Nog iemand ideeën ?

Blink alles
Kost een extra voeding of adapter op 15V, een extra pin oftewel een Mega erbij en een extra mosfet en om verschil in lichsterkte te voorkomen moeten er twee ongelijke weerstanden geplaatst worden en dat moet nogal nauwkeurig.

Afbeeldingslocatie: https://i.imgur.com/jOBASmc.png
klik

Dure hobby zo :|
.

[ Voor 10% gewijzigd door kitao op 28-03-2019 13:01 . Reden: Thumbnail geplaatst ]


Acties:
  • 0 Henk 'm!

  • jeroen vrij
  • Registratie: Februari 2016
  • Laatst online: 09-05-2022

jeroen vrij

Just a arduino noob

Topicstarter
Wat is precies de bedoeling?
9 Leds laten branden?
3 series van 3 met 12v.
Zo heb ik thuis een lamp gemaakt.
99 leds 3.3v series van 3 met 180ohm weerstand.
Nu kan je ze niet apart aan en uit zetten.
Dan moet je de nul van links naar rechts laten lopen.
Of je moet addressable leds nemen dan kan het wel.

[ Voor 32% gewijzigd door jeroen vrij op 28-03-2019 14:32 ]


Acties:
  • 0 Henk 'm!

  • kitao
  • Registratie: Juli 2012
  • Laatst online: 14:11
Handig als er een (1) verschijnt in het tabblad. :)

De bedoeling is om de KnRi kubus een Blink Alles te geven.
Zie nu wel dat 3 leds per kolom heen en terug te laten fietsen niet zo'n probleem meer is maar voor een blink alles is meer nodig. Maar als jij het al klaar hebt liggen, terwijl je eerst aangaf dat dat niet kon, zou helemaal geweldig zijn natuurlijk.

Acties:
  • 0 Henk 'm!

  • jeroen vrij
  • Registratie: Februari 2016
  • Laatst online: 09-05-2022

jeroen vrij

Just a arduino noob

Topicstarter
In de kubus moet je laag voor laag heel snel laten blinken.
Zo lijkt het of de hele kubus brand

Acties:
  • 0 Henk 'm!

  • kitao
  • Registratie: Juli 2012
  • Laatst online: 14:11
Ik log net weer in om mijn vorige post te wijzigen dat ik me wil houden aan de oorspronkelijke opstelling.
En dat is micro-weerstand-led-transistor en een aparte voedingsrail. Mulitplexen is inderdaad de beste oplossing, dat weet ik, maar dat wordt chips bijplaatsen en wil het met losse onderdelen voor elkaar krijgen.
Ik adviseer dit trouwens niet in het echt want hoewel de uno in feite losgekoppeld is van de hogere volt sectie, zijn bij het minste geringste foutje qua weerstandjes een hele rits leds, en misschien ook de daaraan verbonden mos, toast geworden.

Acties:
  • 0 Henk 'm!

  • jeroen vrij
  • Registratie: Februari 2016
  • Laatst online: 09-05-2022

jeroen vrij

Just a arduino noob

Topicstarter
Ik ben nu bezig elke led een eigen weerstand te geven.
Dan kan je alles ineens aanzetten.
Wel volgens de schets die had gemaakt alleen meer weerstanden

Acties:
  • 0 Henk 'm!

  • kitao
  • Registratie: Juli 2012
  • Laatst online: 14:11
Ik moet eerlijk zeggen Jeroen, gister vond ik jouw stelling van 'meer weerstand dus gaat het beter' al vaag maar nu ik dr zelf mee bezig ben klinkt het gewoon raar in mijn oren. Je ziet toch dat er juist bijna helemaal geen weerstand tussen gezet moet worden om een paar leds in serie te laten branden ?

Acties:
  • 0 Henk 'm!

  • jeroen vrij
  • Registratie: Februari 2016
  • Laatst online: 09-05-2022

jeroen vrij

Just a arduino noob

Topicstarter
Maar in de kubus staan er geen leds in serie.
Dus heeft dat niks te maken met weerstanden en in serie zetten.
Als ik er 3 in serie zet gebruik ik 1 weerstand.
Maar staan ze of allemaal aan of uit.
In de kubus staan er per Kolom 3 leds met de anode parallel maar hebben alle 3 een eigen nul.
De kubus heeft niks met leds in serie te maken.

Afbeeldingslocatie: https://tweakers.net/ext/f/kRhiW768Ah7F68irGoO6oPMZ/thumb.jpg

De bovenste is in serie.
Zo heb ik mijn lamp gemaakt.
12v voeding en 3x3 3.3v met 180ohm

Daaronder is parallel.

De 3e noem ik maar even semi parallel zo zijn de meeste cubes gemaakt.
Berekend op 1 led op 5v ä3.3v ca 10ma. 180 ohm
Daarom kan er maar 1 tegelijk aan per kolom

Afbeeldingslocatie: https://tweakers.net/ext/f/aSYeSesjdIj0KHz8dJG1FjiG/thumb.png

En de 4e is wat ik nu ga proberen
3 leds per Kolom met alle een eigen weerstand

Afbeeldingslocatie: https://tweakers.net/ext/f/Y7xchMEYC0VkqbvW4zf81UgS/thumb.jpg

Maar eerst even me 6x6x6 afmaken :)

[ Voor 59% gewijzigd door jeroen vrij op 28-03-2019 15:44 ]


Acties:
  • 0 Henk 'm!

  • kitao
  • Registratie: Juli 2012
  • Laatst online: 14:11
Hoezo er staat niks in serie, er zijn toch de 3 rijen ?
Ok, ergens heb je gelijk dat er (vrijwel) geen leds op rij in serie staan. Maar er zijn al minstens 3 leds per kolom die wél in srie staan.

[Afbeelding]

En als je pin 2 t/m 10 tegelijk openstuurt en je stuurt dan ook nog eens een 'afvoer' pin 11-13 open dan is het toch vrijwel hetzelfde als dat er 9 leds per rij in serie staan ? Of mis ik iets ?

edit : in de kolom staan ze parallel, mijn fout
Maar om een hele rij tot licht te brengen is geen parallel meer volgens mij.

edit 2: Of misschien die ook wel
Maar maakt niks uit, ik zet pin 2-10 open en tegelijk afvoer pin 11-13 open en ik krijg grijs beeld.
dat moet helder geel worden.

edit 3 :
En bij een max van 15V, we gaan geen accu's op tafel zetten.
.

[ Voor 28% gewijzigd door kitao op 28-03-2019 15:50 ]


Acties:
  • 0 Henk 'm!

  • jeroen vrij
  • Registratie: Februari 2016
  • Laatst online: 09-05-2022

jeroen vrij

Just a arduino noob

Topicstarter
Nee in serie betekent dat de - van Led1 naar de + van Led2 gaat en de - van Led2 naar de + van led 3.
Elke Kolom staat eigenlijk parallel alleen hebben ze een eigen nul.
En omdat er maar 1 weerstand van 180ohm zit kan er maar 1 tegelijk aan.

Als je die ene weerstand van de + weghaalt en hem op de layer zet kan er maar 1 led per laag aan.
En dan heb je ipv 9 maar 3 weerstanden nodig

Als je 2 en 10 open zet kolom1 en 9.

En 11 en 13 layer1 en layer3
Branden er 2 leds per Kolom.
180ohm op 5v voor 1x 3.3v led geeft hem 9.4ma
Dus bij twee gaat het mis.

3 leds van 3.3v 10ma in serie heb ik een voeding nodig van min 9.9v en 10ma.
3 leds parallel heb ik een voeding nodig van min. 3.3v 30ma

Dus in het geval van de cube alle leds op 1 laag aan = 9x9.4ma vandaar ook de 9 weerstanden per Kolom.

3 leds per Kolom aan 9.4ma / 3 krijgen ze alle 3 maar 3.13ma.
Als ze in serie zouden staan zou 5v voeding niet voldoende zijn

[ Voor 80% gewijzigd door jeroen vrij op 28-03-2019 16:15 ]


Acties:
  • 0 Henk 'm!

  • kitao
  • Registratie: Juli 2012
  • Laatst online: 14:11
jeroen vrij schreef op donderdag 28 maart 2019 @ 15:57:

Nee in serie betekent dat de - van Led1 naar de + van Led2 gaat en de - van Led2 naar de + van led 3.
Ja, dat is wel zo.
Maar er is maar één afvoerputje als tegelijkertijd pin 11-13 worden opengezet en tegelijkertijd alle leds van kolom 2-10 van stroom worden voorzien. Dus hoe ze dan ook geschakeld staan, die stroom en bijbehorende spanning moeten op de één of andere manier wel geleverd en afgevoerd kunnen worden. Binnen de limiet van het te leveren voltage, wat ik zelf heb gezet op 15V en ook uiteraard binnen de limiet wat één led aankan anders klapt die.

En volgens mij is het zo dat als 27 leds naar 3 massa punten lopen dat dit hetzelfde is als 9 leds naar 1 massa.
Oftewel in serie dus, of althans om die 9 leds tegelijk te laten branden heb je evenveel power nodig als voor 9 parallel.
Maar omdat dit 24V nodig heeft heb ik ze in twee ongelijke stukken gedeeld van 4 en 5 om er 'slechts' 15 volt voor nodig te hebben.
In ieder geval, ik ga dat allemaal niet berekenen maar gewoon uitproberen.
.

[ Voor 26% gewijzigd door kitao op 28-03-2019 17:30 ]


Acties:
  • 0 Henk 'm!

  • jeroen vrij
  • Registratie: Februari 2016
  • Laatst online: 09-05-2022

jeroen vrij

Just a arduino noob

Topicstarter
Uhhh nee in serie heb je meer volt nodig.
3 x 3.3v in serie heb je 9.9v nodig.
De afvoer maakt niet uit er komt bij een cube nooit meer dan 5v over heen.
Er is geen 1 led in de cube die met zijn - naar de + van een andere led gaat dus staan ze niet in serie.

En daarom gebruik ik mosfets om die 93. 6ma per laag af te voeren.
Er word per laag dus tussen de 9.4 en 93.6ma afgevoerd.

De arduino zou dat niet kunnen.
Stel je een cirkel voor waarbij 9 led met de kathode op de cirkel zitten met alle een eigen voeding.
Dat is 1 laag

[ Voor 20% gewijzigd door jeroen vrij op 28-03-2019 17:35 ]


Acties:
  • 0 Henk 'm!

  • kitao
  • Registratie: Juli 2012
  • Laatst online: 14:11
jeroen vrij schreef op donderdag 28 maart 2019 @ 17:30:
Uhhh nee in serie heb je meer volt nodig.
3 x 3.3v in serie heb je 9.9v nodig.
De afvoer maakt niet uit er komt bij een cube nooit meer dan 5v over heen.
Er is geen 1 led in de cube die met zijn - naar de + van een andere led gaat dus staan ze niet in serie.

En daarom gebruik ik mosfets om die 90ma per laag af te voeren.
De arduino zou dat niet kunnen.
Kan zijn, maar jij was degeen die zei dat er maar één led per kolom kan branden en dat blink-alles totaal onmogelijk is. Ok, dat was de 5 volt situatie maar vanaf het begin werd er ook al gezegd, en nu weer dat er mosfets bij zouden komen. Dus als het enkel bij 5V zou blijven waar zijn die mos dan nog voor nodig.
In ieder geval, ik dacht slim en makkelijk af te zijn door de transistors in de KnRi opstelling 1 op 1 te vervangen door mos maar dat zit dus net iets anders, dat past niet helemaal. Dus vandaar de test en ik zie wel waarheen dat gaat.
.

Acties:
  • 0 Henk 'm!

  • jeroen vrij
  • Registratie: Februari 2016
  • Laatst online: 09-05-2022

jeroen vrij

Just a arduino noob

Topicstarter
De mos is op de + niet perse nodig.
Op de - wel anders kan je maar 30ma sinken
Maar ook zonder mosfet kan er maar 1 tegelijk aan per laag.
Of je moet elke led een eigen weerstand geven.
Of je zou bijvoorbeeld met mosfets 3.3v kunnen voeden dan kan bij 3.3v leds de weerstand helemaal weg

[ Voor 57% gewijzigd door jeroen vrij op 28-03-2019 17:41 ]


Acties:
  • 0 Henk 'm!

  • kitao
  • Registratie: Juli 2012
  • Laatst online: 14:11
jeroen vrij schreef op donderdag 28 maart 2019 @ 15:09:
Maar in de kubus staan er geen leds in serie.
Dus heeft dat niks te maken met weerstanden en in serie zetten.
Als ik er 3 in serie zet gebruik ik 1 weerstand.
Maar staan ze of allemaal aan of uit.
In de kubus staan er per Kolom 3 leds met de anode parallel maar hebben alle 3 een eigen nul.
De kubus heeft niks met leds in serie te maken.

[Afbeelding]

De bovenste is in serie.
Zo heb ik mijn lamp gemaakt.
12v voeding en 3x3 3.3v met 180ohm

Daaronder is parallel.

De 3e noem ik maar even semi parallel zo zijn de meeste cubes gemaakt.
Berekend op 1 led op 5v ä3.3v ca 10ma. 180 ohm
Daarom kan er maar 1 tegelijk aan per kolom

[Afbeelding]

En de 4e is wat ik nu ga proberen
3 leds per Kolom met alle een eigen weerstand

[Afbeelding]

Maar eerst even me 6x6x6 afmaken :)
Stel je hebt 3 AAA Duracels, je maakt er een pakketje van, heb je 4.5 volt.
Dat is prima om één led met een 220 Ohm weerstand te laten branden, en misschien zelfs zo'n tweede setje parallel maar volgens mij is het niet zo dat je met dat ene duracel pakket 9 leds in parallel kan laten branden met dezelfde lichtsterkte als dat er maar één aan gekoppeld was. Zou mooi zijn maar je kan niet oneindig door blijven verbinden zonder verlies.

Ziet er wel goed uit jouw tekening en foto enzo d:)b

[Afbeelding]
.

[ Voor 63% gewijzigd door kitao op 28-03-2019 18:52 ]


Acties:
  • +1 Henk 'm!

  • jeroen vrij
  • Registratie: Februari 2016
  • Laatst online: 09-05-2022

jeroen vrij

Just a arduino noob

Topicstarter
Batterijen zijn zo leeg.

Ik moet alleen iets aan me leds doen.
De leds die ik heb zijn zo fel dat als ik er in de cube 1 aanzet het net lijkt of de omliggende ook branden.

Dus de volgende maak ik maar met diffuus leds.

Maar goed hij zit in elkaar ;)

Afbeeldingslocatie: https://tweakers.net/ext/f/4eoXCnndy2NxgnjpMeJL5r2L/thumb.jpg

[ Voor 29% gewijzigd door jeroen vrij op 28-03-2019 20:42 ]


Acties:
  • 0 Henk 'm!

  • kitao
  • Registratie: Juli 2012
  • Laatst online: 14:11
Batterijen zijn zo leeg.

Daarom is er meer volt nodig uit een spanningsbron, zoals regelbare voeding.

En leek me inderdaad al hinderlijk probleem, zonder dat ik ooit een led-kubus had gezien, dat het licht door elkaar heen gaat schijnen.

Acties:
  • 0 Henk 'm!

  • jeroen vrij
  • Registratie: Februari 2016
  • Laatst online: 09-05-2022

jeroen vrij

Just a arduino noob

Topicstarter
jeroen vrij schreef op woensdag 27 maart 2019 @ 17:22:
Met 5v kan je niet drie dezelfde leds op drie lagen aan zetten omdat de weerstand maar voor 1 led is.
Dus zet je kolom1 aan kan je maar 1 layer tegelijk aan doen.
Daarom ben ik nu mijn leds in de cube aan het voorzien van eigen weerstanden.

Dus als ik het goed begrijp voert hij onderstaande code 3x uit.
Eerst laag 3 dan laag 2 dan laag1.
En dat komt omdat de hele code tussen de haakjes staat van de for loop heb ik dat goed.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
for (int i = 13 ; i > 10 ; i-- ) {          // Hoogste lus om de drie rijen om de beurt in beweging te krijgen.

      digitalWrite(i, HIGH);                //  andere twee rijen 12 en 11 waren al Low in set-up

 for (count = 2 ; count < 11 ; count++ ) {   // binnen lus 1 voor links naar rechts
  digitalWrite(count, HIGH);
  delay(t100);
  digitalWrite(count , LOW);
  delay(t100);
 }
 for (count = 10 ; count > 1 ; count-- ) {    // binnen lus 2 voor rechts naar links
  digitalWrite(count, HIGH);
  delay(t100);
  digitalWrite(count , LOW);
  delay(t100);
 }
 digitalWrite(i, LOW);            // de twee binnenste lussen zijn uitgevoerd, zet de rij i weer op 0
}
Heb deze code getest maar hij zet alle lagen op High en gaat dan de for loop doen.

Acties:
  • 0 Henk 'm!

  • kitao
  • Registratie: Juli 2012
  • Laatst online: 14:11
jeroen vrij schreef op donderdag 28 maart 2019 @ 22:11:

Heb deze code getest maar hij zet alle lagen op High en gaat dan de for loop doen.
Nog even terugkomend op het doorschijnen, de kubus die jij hebt gemaakt is echt knap gedaan en een plaatje om te zien. Misschien kan je daar nog eentje van maken maar verder uit elkaar, dus een grotere kubus en evt. een verschillende led-kleur per laag ?
Edit : ik dacht dat je het nog steeds over de 3D had, maar is inmiddels 6D geworden. Die vergroten en je hebt een extra kamer nodig dus dat wordt lastig. Mijn fout. Ook heel mooi gemaakt deze.

Wat het stukje code betreft, daaraan vooraf zit een beginstand, ik vermoed namelijk dat je bent verder gegaan met alleen dat stukje eruit gehaald te hebben ? Want de code waar die vandaan komt, dat is deze
https://github.com/Alectu...er/Knight_Rider_Alc_1.ino
en die is getest en dat ging goed. Let ook op regel 34 net boven het eindhaakje vd top-lus. Daar wordt de rij weer op 0 gezet zodat de beginstand vd toplus altijd 3 rijen op 0 is.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
void setup()
{ 
 for (int i = 0; i <= 13; i++) 
 {
  pinMode(i, OUTPUT);
 }
 for (int i = 11; i <= 13; i++) 
 {
  digitalWrite(i, LOW);           
 }
}
// einde setup ************************************************************

void loop() {   // VL VL VL VL VL VL VL VL VL VL VL VL VL VL VL

// Patroon 1 : Alle drie de rijen apart heen en terug

for (int i = 13 ; i > 10 ; i-- ) {          // Hoogste lus om de drie rijen om de beurt in beweging te krijgen.

      digitalWrite(i, HIGH);                //  andere twee rijen 12 en 11 waren al Low in set-up

 for (count = 2 ; count < 11 ; count++ ) {   // binnen lus 1 voor links naar rechts
  digitalWrite(count, HIGH);
  delay(t100);
  digitalWrite(count , LOW);
  delay(t100);
 }
 for (count = 10 ; count > 1 ; count-- ) {    // binnen lus 2 voor rechts naar links
  digitalWrite(count, HIGH);
  delay(t100);
  digitalWrite(count , LOW);
  delay(t100);
 }
 digitalWrite(i, LOW);            // de twee binnenste lussen zijn uitgevoerd, zet de rij i weer op 0
}                                 // en maak de volgende rij hoog

//  Einde patroon 1       ***********************************************

Zit momenteel vast, heb net 2 kolommen gemaakt maar nu moeten de leds in een kolom nog apart uitgezet kunnen worden. Dat moet dan de rij worden. Of dit zou twee rijen zijn en dan moeten er er nog kolommen bij. En als dat gelukt is, ooit, dan blijft misschien waarschijnlijk toch het probleem dat blink alles net zo vaag blijft als bij de vorige. Valt niet mee allemaal.

Afbeeldingslocatie: https://i.imgur.com/53C90bJ.png
klik

Zit te denken aan een switch die in één keer 9 lijnen knipt.

****

Dit is m volgens mij

Afbeeldingslocatie: https://i.imgur.com/C4MIUs3.png?1

Meer weerstandjes en het gaat beter ;)

De oranje blokjes worden dan de Uno pinnen.

Ik heb de afbeelding in imgur gekanteld want in simu heb ik nog geen manier gevonden om hele secties te kantelen, gaat wel per component maar niet met een heel blok.

Kan de uno dat hebben, per pin 3 leds parallel met ieder 100 Ohm weerstand ?

Blink alles
5V per drie parallelle leds met R100 en 12V op de mosfets.

Afbeeldingslocatie: https://i.imgur.com/4VNaQjf.png
klik

Oh, ik mis er nog twee, zijn er maar 7

Twee kolommen erbij geplaatst en blink alles wordt net iets doffer maar scheelt weinig.
15V op de mosfets herstelt dat weer maar 12V is genoeg en 9V is ook nog steeds goed zichtbaar.
Andere optie is natuurlijk om de R100 te verlagen maar dan moet ik 27x gaan klikken.

Hiermee is de voorbereidings/tussenfase afgerond. Ik hoop dat het niet teveel plaatjes zijn.

Afbeeldingslocatie: https://i.imgur.com/dpSfaia.png
klik

1 led per kolom gaat 17.7 mA doorheen bij R100, dat is 53.1mA per uno-pin. Dat is teveel geloof ik. Komt dus misschien nog een hele rits transistors bij.
Ook zou in theorie er dan 9 x 17.7 = 159.3 mA door elke mosfet gaan. Misschien dikkere kabel nodig.
.

[ Voor 22% gewijzigd door kitao op 29-03-2019 09:05 ]


Acties:
  • 0 Henk 'm!

  • jeroen vrij
  • Registratie: Februari 2016
  • Laatst online: 09-05-2022

jeroen vrij

Just a arduino noob

Topicstarter
5v is hier ook voldoende.
Zelfs 3.3 volstaat nog

Acties:
  • 0 Henk 'm!

  • kitao
  • Registratie: Juli 2012
  • Laatst online: 14:11
Heb één zo'n mosfet 5V gegeven maar dan worden de rij leds grijs.
Naar mijn idee is de mosfet in deze sitatie een soort kraan geworden, een stuwsluis zoiets. Meer volt erop en de sluis gaat open, de stroom erdoorheen neemt toe en de leds worden helderder.
En dat zie ik nu ook, de rij van de mosfet met 5V geeft op een led dan nog maar 9.7 ipv 17.7 mA.
De mosfet dient nu als regelbare weerstand.

[ Voor 78% gewijzigd door kitao op 29-03-2019 09:17 ]


Acties:
  • 0 Henk 'm!

  • jeroen vrij
  • Registratie: Februari 2016
  • Laatst online: 09-05-2022

jeroen vrij

Just a arduino noob

Topicstarter
Je heb diverse mosfet sommige gaan bijvoorvoorbeeld bij 10v helemaal open.
Maar als je een logic level gebruikt heb je minder nodig.
Die ik gebruik laten ongeveer 2A door bij 5v

Acties:
  • 0 Henk 'm!

  • kitao
  • Registratie: Juli 2012
  • Laatst online: 14:11
Ok, ik heb de mijne van adafruit geplukt, link had ik eerder geplaatst.
Maar ik zit m'n laatste plaatje te bekijken en op de mosfets staat nu 12V op de oranje blokjes.
Eerder schreef ik dat de oranje blokjes de pinnen van de uno moesten gaan worden. Maar dat gaat dus niet op met 12V en wrs ook niet 1 op 1 met 5V want daar gaat dan ongeveer 55mA doorheen per kolom. Voor die laatste is geen probleem met een paar transistors erbij zoals in de oorspronkelijke opstelling maar om de mosfets 12V wel of niet in te schakelen zal wrs een relais worden. Tenzij iemand een beter idee heeft.
.

[ Voor 3% gewijzigd door kitao op 29-03-2019 11:46 ]


Acties:
  • 0 Henk 'm!

  • ronaldmathies
  • Registratie: Juni 2001
  • Niet online
Hierbij nog mijn code voor de 4x4x3 kubus met de SN74HC595 shift registers:

C:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
 
#include <SPI.h>

//int hcsPin = D8;
int dataPin = D6;
int clockPin = D5;
int latchPin = D9;
int blankPin = D3;

// Cube of 4(w)x4(d)x3(h) = 48 bits, devided by 8 to get 6 bytes.
byte leds[6];

int level1 = D0;
int level2 = D1;
int level3 = D2;

int activeLevel = 0;

void setup()  {
  Serial.begin(115200);

  SPI.setBitOrder(MSBFIRST);//Most Significant Bit First
  SPI.setDataMode(SPI_MODE0);// Mode 0 Rising edge of data, keep clock low
  SPI.setClockDivider(SPI_CLOCK_DIV2);//Run the data in at 16MHz/2 - 8MHz

  noInterrupts();

  //set pins to output so you can control the shift register
  pinMode(dataPin, OUTPUT);
  pinMode(clockPin, OUTPUT);
  pinMode(latchPin, OUTPUT);
  
    
  pinMode(level1, OUTPUT);
  pinMode(level2, OUTPUT);
  pinMode(level3, OUTPUT);

  SPI.begin();

  timer1_isr_init();
  timer1_attachInterrupt(timer1);
  timer1_enable(TIM_DIV256, TIM_EDGE, TIM_LOOP);
  timer1_write(1000);

  interrupts();
}

void timer1() {
  digitalWrite(blankPin, HIGH);

  int whichbit = activeLevel * 16;
  int startbyte = int(whichbit / 8);
  
  for (int byteIdx = startbyte; byteIdx <= startbyte + 1; byteIdx++) {
    SPI.transfer(leds[byteIdx]);
  }

  digitalWrite(latchPin, HIGH);
  digitalWrite(latchPin, LOW);
  digitalWrite(blankPin, LOW);
  
  digitalWrite(level1, activeLevel == 0 ? HIGH : LOW); 
  digitalWrite(level2, activeLevel == 1 ? HIGH : LOW);
  digitalWrite(level3, activeLevel == 2 ? HIGH : LOW);

  pinMode(blankPin, OUTPUT);

 activeLevel++;
  if (activeLevel == 3) {
    activeLevel = 0;
  }

}

void LED(int level, int row, int col, int state) {

  if (level < 0) level = 0;
  if (level > 2) level = 2;
  if (row < 0) row = 0;
  if (row > 3) row = 3;
  if (col < 0) col = 0;
  if (col > 3) col = 3;

  int whichbit = (level * 16) + (row * 4) + col;
  
  // caclulate which byte should be updated.
  int whichbyte = int(whichbit / 8);

   bitWrite(leds[whichbyte], whichbit-(8*whichbyte), state);
}

int animation = 0;

void loop() {
  if (animation == 0) {
    sequentialFillAnimationBottomToTop(1);
  } else if (animation == 1) {
    sequentialFillAnimationBottomToTop(0);
  } else if (animation == 2) {
    sequentialFillAnimationTopToBottom(1);
  } else if (animation == 3) {
    sequentialFillAnimationTopToBottom(0);
  } else if (animation == 4) {
    sequentialFillAnimationBackToFront(1);
  } else if (animation == 5) {
    sequentialFillAnimationBackToFront(0);
  } else if (animation == 6) {
    sequentialFillAnimationFrontToBack(1);
  } else if (animation == 7) {
    sequentialFillAnimationFrontToBack(0);  
  } else {
    animation = 0;
  }
}

void resetLeds() {
  memset(&leds[0], 0, sizeof(leds));
}

void sequentialFillAnimationBottomToTop(int filling) {
  for (int level = 0; level < 3; level++) {
    for (int row = 0; row < 4; row++) {
      for (int col = 0; col < 4; col++) {
        LED(level, row, col, filling);
        delay(50);
     }
    }
  }
  animation++;
}

void sequentialFillAnimationTopToBottom(int filling) {
  for (int level = 2; level >= 0; level--) {
    for (int row = 3; row >= 0; row--) {
      for (int col = 3; col >= 0; col--) {
        LED(level, row, col, filling);
        delay(50);
     }
    }
  }
  animation++;
}

void sequentialFillAnimationBackToFront(int filling) {
  for (int col = 3; col >= 0; col--) {
    for (int level = 2; level >= 0; level--) {
      for (int row = 3; row >= 0; row--) {
        LED(level, row, col, filling);
        delay(10);
      }
    }
  }
  animation++;
}

void sequentialFillAnimationFrontToBack(int filling) {
  for (int col = 0; col < 4; col++) {
    for (int level = 0; level < 3; level++) {
      for (int row = 0; row < 4; row++) {
        LED(level, row, col, filling);
        delay(10);
     }
    }
  }
  animation++;
}
 

3015 Wp-z 5360 Wp-nno op 2 x SMA-SB3600 TL-21, Warmtepomp: ERSC-VM2CR2 / PUHZ-SHW140 YHA, WTW Q350, EV Kia Ev6 GT-Line


Acties:
  • 0 Henk 'm!

  • kitao
  • Registratie: Juli 2012
  • Laatst online: 14:11
Helemaal grandioos Ronald, bedankt.
Ben niet zo thuis in de SPI dus op eerste gezicht is de code voor mij minstens half onleesbaar maar ik ga aan de hand van je foto's een poging wagen dit erin te zetten. Nadat de schakeling waar ik nu mee bezig ben is afgerond.

Acties:
  • 0 Henk 'm!

  • jeroen vrij
  • Registratie: Februari 2016
  • Laatst online: 09-05-2022

jeroen vrij

Just a arduino noob

Topicstarter
Nou idd voor mij is dat Chinees snap niet wat alles doet. ;)

Het val nog mee met de leds het doorschijnend gelukkig

[ Voor 34% gewijzigd door jeroen vrij op 29-03-2019 19:18 ]


Acties:
  • 0 Henk 'm!

  • kitao
  • Registratie: Juli 2012
  • Laatst online: 14:11
Stapje verder gekomen maar heeft paar uur gekost om simpel de 12V te schakelen.

Afbeeldingslocatie: https://i.imgur.com/0fvdYIz.png?1

Handig als je niks meer weet van de werking van mosfets.

Gebaseerd op dit plaatje waar veel meer componenten omheen zitten maar ik vind het prima zo.

Afbeeldingslocatie: https://i.imgur.com/vnPpYR2.png?1

De relay als schakelaar wat ik eerst overwoog toch maar niet gebruikt, ging nogal traag in simu.

Edit : De mosfet extra als schakelaar kost de helft vd stroom die door de leds-rij heen gaat.
Was eerst ca. 155 en nu nog maar 74 mA. Geen verbetering dit.

Componenten van plaatje hierboven erbij gezet maar simu weigerde daar de uno op in te schakelen, daarom zijn het toch maar relais geworden.

Afbeeldingslocatie: https://i.imgur.com/4OOhWQw.png
Thumbnail is niet goed, klik hier https://imgur.com/a/jy5U4pR en dan nog een keer

Er gaat ca. 112 mA door één rij bij blink alles en dat is ca. 12.5 mA per led met 15V op de mosfets.

Schema is ook te vinden op Github met de titel KnRi-Mosfets-End en is getest met deze code.

Transistors : BC547B .............. Mosfets : IRLB 8721 PBF

De relais hebben geen typenummer, misschien leuk om er een paar ouderwetse relais met klikgeluid en doorzichtig deksel erbij te zetten, de rijen schakelen toch al niet veel.

Afbeeldingslocatie: https://i.imgur.com/YlV91xA.jpg?1

kort filmpje
Wikipedia: Relay
.

[ Voor 65% gewijzigd door kitao op 30-03-2019 11:52 . Reden: Link naar plaatje toegevoegd ]


Acties:
  • 0 Henk 'm!

  • kitao
  • Registratie: Juli 2012
  • Laatst online: 14:11
ronaldmathies schreef op vrijdag 29 maart 2019 @ 12:55:
Hierbij nog mijn code voor de 4x4x3 kubus met de SN74HC595 shift registers:

C:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
 
#include <SPI.h>

//int hcsPin = D8;
int dataPin = D6;
int clockPin = D5;
int latchPin = D9;
int blankPin = D3;

// Cube of 4(w)x4(d)x3(h) = 48 bits, devided by 8 to get 6 bytes.
byte leds[6];

int level1 = D0;
int level2 = D1;
int level3 = D2;

int activeLevel = 0;

void setup()  {
  Serial.begin(115200);

  SPI.setBitOrder(MSBFIRST);//Most Significant Bit First
  SPI.setDataMode(SPI_MODE0);// Mode 0 Rising edge of data, keep clock low
  SPI.setClockDivider(SPI_CLOCK_DIV2);//Run the data in at 16MHz/2 - 8MHz

  noInterrupts();

  //set pins to output so you can control the shift register
  pinMode(dataPin, OUTPUT);
  pinMode(clockPin, OUTPUT);
  pinMode(latchPin, OUTPUT);
  
    
  pinMode(level1, OUTPUT);
  pinMode(level2, OUTPUT);
  pinMode(level3, OUTPUT);

  SPI.begin();

  timer1_isr_init();
  timer1_attachInterrupt(timer1);
  timer1_enable(TIM_DIV256, TIM_EDGE, TIM_LOOP);
  timer1_write(1000);

  interrupts();
}

void timer1() {
  digitalWrite(blankPin, HIGH);

  int whichbit = activeLevel * 16;
  int startbyte = int(whichbit / 8);
  
  for (int byteIdx = startbyte; byteIdx <= startbyte + 1; byteIdx++) {
    SPI.transfer(leds[byteIdx]);
  }

  digitalWrite(latchPin, HIGH);
  digitalWrite(latchPin, LOW);
  digitalWrite(blankPin, LOW);
  
  digitalWrite(level1, activeLevel == 0 ? HIGH : LOW); 
  digitalWrite(level2, activeLevel == 1 ? HIGH : LOW);
  digitalWrite(level3, activeLevel == 2 ? HIGH : LOW);

  pinMode(blankPin, OUTPUT);

 activeLevel++;
  if (activeLevel == 3) {
    activeLevel = 0;
  }

}

void LED(int level, int row, int col, int state) {

  if (level < 0) level = 0;
  if (level > 2) level = 2;
  if (row < 0) row = 0;
  if (row > 3) row = 3;
  if (col < 0) col = 0;
  if (col > 3) col = 3;

  int whichbit = (level * 16) + (row * 4) + col;
  
  // caclulate which byte should be updated.
  int whichbyte = int(whichbit / 8);

   bitWrite(leds[whichbyte], whichbit-(8*whichbyte), state);
}

int animation = 0;

void loop() {
  if (animation == 0) {
    sequentialFillAnimationBottomToTop(1);
  } else if (animation == 1) {
    sequentialFillAnimationBottomToTop(0);
  } else if (animation == 2) {
    sequentialFillAnimationTopToBottom(1);
  } else if (animation == 3) {
    sequentialFillAnimationTopToBottom(0);
  } else if (animation == 4) {
    sequentialFillAnimationBackToFront(1);
  } else if (animation == 5) {
    sequentialFillAnimationBackToFront(0);
  } else if (animation == 6) {
    sequentialFillAnimationFrontToBack(1);
  } else if (animation == 7) {
    sequentialFillAnimationFrontToBack(0);  
  } else {
    animation = 0;
  }
}

void resetLeds() {
  memset(&leds[0], 0, sizeof(leds));
}

void sequentialFillAnimationBottomToTop(int filling) {
  for (int level = 0; level < 3; level++) {
    for (int row = 0; row < 4; row++) {
      for (int col = 0; col < 4; col++) {
        LED(level, row, col, filling);
        delay(50);
     }
    }
  }
  animation++;
}

void sequentialFillAnimationTopToBottom(int filling) {
  for (int level = 2; level >= 0; level--) {
    for (int row = 3; row >= 0; row--) {
      for (int col = 3; col >= 0; col--) {
        LED(level, row, col, filling);
        delay(50);
     }
    }
  }
  animation++;
}

void sequentialFillAnimationBackToFront(int filling) {
  for (int col = 3; col >= 0; col--) {
    for (int level = 2; level >= 0; level--) {
      for (int row = 3; row >= 0; row--) {
        LED(level, row, col, filling);
        delay(10);
      }
    }
  }
  animation++;
}

void sequentialFillAnimationFrontToBack(int filling) {
  for (int col = 0; col < 4; col++) {
    for (int level = 0; level < 3; level++) {
      for (int row = 0; row < 4; row++) {
        LED(level, row, col, filling);
        delay(10);
     }
    }
  }
  animation++;
}
 
Is die voor arduino of voor ESP ?
Ik krijg enkel 'not declared in this scope' als mitrailleurvuur op regel 4, 5 , 6, en 7 ?
De rest ervan heb ik maar niet meer geprobeerd.

Acties:
  • 0 Henk 'm!

  • ronaldmathies
  • Registratie: Juni 2001
  • Niet online
kitao schreef op zaterdag 30 maart 2019 @ 22:27:
[...]


Is die voor arduino of voor ESP ?
Ik krijg enkel 'not declared in this scope' als mitrailleurvuur op regel 4, 5 , 6, en 7 ?
De rest ervan heb ik maar niet meer geprobeerd.
De Dx pin nummers zijn alleen voor de ESP, deze moeten dus omgenummert worden voor bijvoorbeeld de arduino uno.

Dus volgens mij is het dan:

Latch: 2
Blank: 4
Data: 11
Clock: 13

De level1 t/m 3 moeten gewoon drie digitale pins zijn, geen speciefieke pins. Deze worden gebruikt om de bjt transistors aan te sturen voor de verschillende levels.

3015 Wp-z 5360 Wp-nno op 2 x SMA-SB3600 TL-21, Warmtepomp: ERSC-VM2CR2 / PUHZ-SHW140 YHA, WTW Q350, EV Kia Ev6 GT-Line


Acties:
  • 0 Henk 'm!

  • kitao
  • Registratie: Juli 2012
  • Laatst online: 14:11
Ok, bedankt, dat had ik zelf moeten zien maar was al laat gisteren. Zoals je waarschijnlijk hebt gezien heb ik van jouw schakeling voor wat betreft de 74 IC's een apart topic gemaakt en daarin kun je zien hoever ik ben met het nabouwen van jouw opstelling maar zoals het er nu voor staat is dat nog in het spelletjes stadium en zal ik de weerstanden op de normale posities zetten.
Ik had dat onderwerp ook hier kunnen laten maar vind eigenlijk dat de IC's los staan van dit led-kubus topic.

Terugkerend naar jouw code, ik begrijp latch, clock, data , level 1+2+3 maar waar gebruik jij de blank pin voor ?
Zelf gebruik ik namelijk maar 3 pinnen voor de SPI opstelling.

***
Heb nu een ander programma erin zitten die gebruik maakt van setRegisterPin, normaal is dit shiftOut.

https://gist.github.com/quellhorst/1258424

Zit foutje in op regel 3 , in de commentlijn, dat moet pin 11 zijn, MR is pin 10 op de 74.
(en een eventueel bijbehorend schema heb ik er niet van kunnen vinden)

Maar blijft nog steeds hetzelfde, met een minimaal weerstandje, nu al gereduceerd tot 5.5 Ohm, werkt de schakeling ook. Dat scheelt dus 4x4 keer -1 solderen.

Afbeeldingslocatie: https://i.imgur.com/kXKYqTH.png?1
https://imgur.com/a/KpP7iNS

Mijn vorige plaatje met tekst BC547B gaat dit niet redden, daarom dat maar weggehaald.

****

Terug naar jouw code, ik krijg nu error op timer1_isr_init(); , eveneens 'not declared in this scope'.
Regel 39 is dat. Heb het nog niet in de zoekmachine gestopt.
.

[ Voor 3% gewijzigd door kitao op 31-03-2019 09:40 ]


Acties:
  • 0 Henk 'm!

  • ronaldmathies
  • Registratie: Juni 2001
  • Niet online
kitao schreef op zondag 31 maart 2019 @ 09:33:
Ok, bedankt, dat had ik zelf moeten zien maar was al laat gisteren. Zoals je waarschijnlijk heb gezien heb ik van jouw schakeling voor wat betreft de 74 IC's een apart topic gemaakt en daarin kun je zien hoever ik ben met het nabouwen van jouw opstelling maar zoals het er nu voor staat is dat nog in het spelletjes stadium en zal ik de weerstanden op de normale posities zetten.
Ik had dat onderwerp ook hier kunnen laten maar vind eigenlijk dat de IC's los staan van dit led-kubus topic.

Terugkerend naar jouw code, ik begrijp latch, clock, data , level 1+2+3 maar waar gebruik jij de blank pin voor ?
Zelf gebruik ik namelijk maar 3 pinnen voor de SPI opstelling.

***
Heb nu een ander programma erin zitten die gebruik maakt van setRegisterPin, normaal is dit shiftOut.

https://gist.github.com/quellhorst/1258424

Zit foutje in op regel 3 , in de commentlijn, dat moet pin 11 zijn, MR is pin 10 op de 74.

Maar blijft nog steeds hetzelfde, met een minimaal weerstandje, nu al gereduceerd tot 5.5 Ohm, werkt de schakeling ook. Dat scheelt dus 4x4 keer -1 solderen.

[Afbeelding]
https://imgur.com/a/KpP7iNS

Mijn vorige plaatje met tekst BC547B gaat dit niet redden, daarom dat maar weggehaald.

****

Terug naar jouw code, ik krijg nu error op timer1_isr_init(); , eveneens 'not declared in this scope'.
Regel 39 is dat. Heb het nog niet in de zoekmachine gestopt.
.
Blank pin is de output enable op het register. Dit zorgt ervoor dat wanneer je de data aan het inladen bent je geen ghosting krijgt. Pas als alle data ingeladen is wordt de output enabled.

Die timer is specifiek voor de esp. Op een uno wordt dat anders opgezet:

Zie deze code hoe dat op te zetten is:

https://www.kevindarrah.c...GB_CubeV12_BitwiseFix.ino

Hierop is mijn code gebaseerd.

Maar even als tip. Als je uiteindelijk een 8x8x8 led of zelfs een rgb led cube wilt boiwen kan je beter kijken naar de tlc5940nt register. Deze heeft veel voordelen t.o.v de 595.

Dit is namelijk een constant current sink led driver:

Aansturing van 16 leds.
1 enkele resistor per 16 leds.
4096 intensiteits niveau’s per led via ingebouwde pwm.
Dot correction zodat je per led eventueel een afwijking kan instellen voor de intensiteit.
Enzovoort...

Deze ben ik nu aan het gebruiken. Verder werkt hij redelijk hetzelfde als de 595, ook daisy chaining, ook via spi.

Het scheelt namelijk enorm veel soldeerwerk.

[ Voor 13% gewijzigd door ronaldmathies op 31-03-2019 09:45 ]

3015 Wp-z 5360 Wp-nno op 2 x SMA-SB3600 TL-21, Warmtepomp: ERSC-VM2CR2 / PUHZ-SHW140 YHA, WTW Q350, EV Kia Ev6 GT-Line


Acties:
  • 0 Henk 'm!

  • kitao
  • Registratie: Juli 2012
  • Laatst online: 14:11
Bedankt Ronald, heel duidelijk antwoord. Nou is het wel zo dat ik elektronica 'erbij' doe, hoewel het een steeds groter aandeel krijgt. Het andere aandeel is leren codes lezen en daarin ben ik wel tamelijk gefocust en geconcentreerd mee bezig en dat heb ik vanmorgen al twee uur lang gedaan met assembly. Ik zal jouw link bekijken maar als het pittig ingewikkeld wordt dan hou ik het liever bij de github code.

En bedankt voor de tip, zal genoemd IC ook bekijken Zelf soldeer ik niet meer en gebruik alleen nog maar de simu. RGB heb ik daarin niet kunnen ontdekken hoewel het misschien met drie leds nagebootst kan worden. Pwm nog niet geprobeerd, dat zal hopelijk wel lukken maar genoemd IC zit er niet in zover ik gezien heb.
Na deze kubus en de 74HC ga ik een paar andere componenten proberen waarschijnlijk maar weet zeker dat andere lezers jouw tip ook goed kunnen gebruiken dus nogmaals bedankt. :)
.

[ Voor 35% gewijzigd door kitao op 31-03-2019 10:19 ]


Acties:
  • 0 Henk 'm!

  • kitao
  • Registratie: Juli 2012
  • Laatst online: 14:11
Dit is een simulatie. Nabouwen ervan is op eigen risico.

4x4x4 mega

Afbeeldingslocatie: https://i.imgur.com/55OZ4LG.jpg?1
https://imgur.com/a/PdDGPHT

code:
1
2
3
4
5
6
7
8
9
10
void setup() {
   for (int i = 6 ; i < 70 ; i++) {
    pinMode ( i , OUTPUT);
  }
  for (int i = 6 ; i < 70 ; i++) {
    digitalWrite(i, HIGH);
  }
}
void loop() {
}

.

[ Voor 25% gewijzigd door kitao op 01-04-2019 11:17 . Reden: Disclaimer geplaatst. ]


Acties:
  • 0 Henk 'm!

  • kitao
  • Registratie: Juli 2012
  • Laatst online: 14:11
74HC138 --- 3 to 8 Line Decoder De-Multiplexer

Afbeeldingslocatie: https://i.imgur.com/VqNTKMC.jpg?1

Code en schema zijn onder deze 2 minuten video te vinden.

YouTube: Proteus – Arduino & IC 74HC138 - Simple Ping Pong Game

In Simulide werkt multiplexen niet, zelfs niet als ik de circuit-snelheid van 1M tot 1K verlaag.
Of ik zie iets over het hoofd maar had het al eerder geprobeerd.
Toch geeft de matrix licht en zie ook wel enige beweging maar niet zoals in de video.
De code is mij te ingewikkeld hoewel ik er verder naar ga kijken of ik nog iets aan de snelheid kan veranderen.

********** dag later ************

Beeld is beter geworden maar met dezelfde standaard instellingen.

Afbeeldingslocatie: https://i.imgur.com/PANs74O.jpg?1

Sinds kort blijkt er namelijk een nieuwe versie Simulide te zijn.
Bovenste is versie 0.2.9 en onderste 0.3.10
Maar nog steeds geen los brandende led te zien :|
.

[ Voor 20% gewijzigd door kitao op 03-04-2019 14:39 . Reden: dag later ]


Acties:
  • 0 Henk 'm!

  • kitao
  • Registratie: Juli 2012
  • Laatst online: 14:11
Kwam net deze tegen, totaal geen extra componenten nodig, enkel leds , een uno of nano en bedrading en code staat erbij met alleen maar for lussen en pin-nummers.

Afbeeldingslocatie: https://hackster.imgix.net/uploads/attachments/226964/D8MN8Wn9zvXAxoaTTzLd.jpg?auto=compress%2Cformat&w=740&h=555&fit=max

https://www.hackster.io/MakerRobotics/led-cube-4x4x4-8242dd

@jeroen vrij

Afbeeldingslocatie: https://i.imgur.com/YNGDbEu.jpg?1
https://imgur.com/a/O4k6IQZ

Getest en doet het goed, hele leuke effecten zitten erin.

Blauwe draad betekent 0 , rode draad = 1.
.

[ Voor 28% gewijzigd door kitao op 03-04-2019 19:25 . Reden: Test toegevoegd. ]


Acties:
  • 0 Henk 'm!

  • jeroen vrij
  • Registratie: Februari 2016
  • Laatst online: 09-05-2022

jeroen vrij

Just a arduino noob

Topicstarter
Het is mij inmiddels gelukt met 3 transistors om de cube werkend te krijgen.
Pas als ik de delay naar 5ms breng lukt het om de hele kubus te laten branden.
Ga morgen de code dermate aanpassen en zodra ik de code klaar heb zal ik YouTube video uploaden.
Had een nieuwe arduino gekocht maar nog deed hij het niet.
Nu blijkt mijn usb otg is stuk. :)
Weet niet hoe ik dat voor elkaar heb gekregen maar ga nu naar de mediamarkt om een nieuwe te halen

Acties:
  • 0 Henk 'm!

  • kitao
  • Registratie: Juli 2012
  • Laatst online: 14:11
Wat een pech weer, heb daar zelf weinig last van want kan hooguit gebeuren dat het programma crasht en ik een tijd niet heb gesaved dat ik opnieuw moet beginnen.
Ben een 6 1/3 X 6 1/3 X 6 1/3 kubus tegengekomen.
Code en tekening staan hier :

https://www.elabpeers.com/led-matrix-display.html

Code is zip download en schema is pdf download.

Het schema ziet er zo uit, maar dan iets scherper in beeld :

Afbeeldingslocatie: https://i.imgur.com/ubtwfRR.jpg?1
https://imgur.com/a/e9wSmmg

Heb een kwart ervan nagebouwd en er zit beweging in, nogal saai patroontje maar het is een demo code en kan ook zijn dat vanwege multiplexen ik niet alle leds afzonderlijk in beeld krijg. Heb de snelheid al met een factor 1000 verlaagd.
Er zijn drie demo codes in de zip en de eerste is best te volgen hoewel het mij nu om het simuleren gaat maar herkende wel switch case e.d. Volgende stap wordt het bijknopen van de andere drie.

Dit is de simu

Afbeeldingslocatie: https://i.imgur.com/FJdz2AX.jpg?1
https://imgur.com/a/HRPzbt6

***

Ben inmiddels op de helft

Afbeeldingslocatie: https://i.imgur.com/ZW3G9ZK.jpg?1
https://imgur.com/a/LZh8WHm


***

Driekwart

Afbeeldingslocatie: https://i.imgur.com/RnFCLQl.jpg?1
https://i.imgur.com/FEyYS4r.jpg


Door het in stukken te delen hoop ik dat het overzichtelijker blijft.
Bij het plaatsen van de tweede HC138 kwam ik er achter dat bij de bovenste de ingangsdraden niet helemaal goed zaten terwijl de matrixxen toch beeld gaven. Daarom kan ik geen 100% garantie geven dat het helemaal klopt volgens origineel ontwerp maar zal er niet veel van afwijken.
Edit : Dit komt mede omdat ik met de onderste HC138 van het schema van de fabrikant ben begonnen.
De bovenste staat namelijk gekoppeld aan de onderste en als je daarmee begint zal het misschien niet werken omdat je dan met chip select te maken krijgt. In mijn schema gaat het dan om de pennen !E1 , !E2 en E3.
Alle vier de kwarten zijn getest met dezelfde code Demo1. Leek me handiger om meteen te testen in plaats van alles op te bouwen en dan erachter te komen dat het spul niet draait.

Draden in het blauw zijn 0 , rood = 1.
Dat lijkt in de snip niet helemaal te kloppen maar dat komt omdat de draden erg snel van kleur veranderen en dat liet zich niet vangen in de moment-opname.

Het laatste kwart duurde iets langer, de leds in de vierde matrix liepen daar horizontaal ipv verticaal.
Drie keer opnieuw aangesloten maar geen succes. Bleek dat ik de matrix een horizontale flip moest geven ipv kantelen. Laatste plaatje komt in een andere,volgende post.
.

[ Voor 63% gewijzigd door kitao op 04-04-2019 13:37 . Reden: Plaatje verkleind / *** ]


Acties:
  • 0 Henk 'm!

  • kitao
  • Registratie: Juli 2012
  • Laatst online: 14:11
Afbeeldingslocatie: https://i.imgur.com/N7mZcUB.jpg?1
klik

Codes en schema zijn hier te vinden :

https://www.elabpeers.com/led-matrix-display.html


Afbeeldingslocatie: https://i.imgur.com/3h5bXz6.jpg?1
klik

Ps\
Mocht iemand dit willen bouwen, de pin nummers van de micro op het schema van de fabrikant, daarvan is het makkelijker om die in de code te gebruiken. Gaat om dit stukje :
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//***************************************************************************
// https://www.elabpeers.com/led-matrix-display.html
//***********************************************************************/

#include <Arduino.h>

//IO    

#define LEDARRAY_D 2
#define LEDARRAY_C 3
#define LEDARRAY_B 4
#define LEDARRAY_A 5
#define LEDARRAY_G 6
#define LEDARRAY_DI 7
#define LEDARRAY_CLK 8
#define LEDARRAY_LAT 9

// *********************************

Demo 1 is dat.
De led-matrix is m.i. van het common anode type.

De 100 Ohm blokjes zijn Dip-weerstanden, zien eruit als IC's.

Afbeeldingslocatie: https://www.thedigitalshop.net/iccpix/dip-i-14.gif

https://uk.rs-online.com/web/p/resistor-networks/5223113/

De 74HC138 is een High-Speed CMOS Logic 3- to 8-Line Decoder / Demultiplexer Inverting and Noninverting

http://www.ti.com/lit/ds/symlink/cd54hct238.pdf

Totaal aantal leds = 16 x 16 = 256
Dat is 8 x 8 x 4
Dat is dus een halve 8D kubus.
Of een 6D en hou je 40 leds over.
Daarmee kan dan eventueel een puntdakje op de kubus worden gezet.
Of een extra bodem fundering.

Demo 2 en 3 geven hier een lawine aan errors :|

exit status 1
Error compiling for board Arduino/Genuino Uno.

Opgelost
Ik zag ineens dat in demo 2 en 3 op regel 1 de japanners een // vergeten zijn te plaatsen en staat er ********.
Lijkt simpel maar als je gaat zoeken op de error melding zit je meteen in doolhof.
Prima debugger die Arduino ;(
.

[ Voor 88% gewijzigd door kitao op 04-04-2019 15:53 . Reden: Ps\ ]

Pagina: 1 2 3 4 Laatste