Cookies op Tweakers

Tweakers maakt gebruik van cookies, onder andere om de website te analyseren, het gebruiksgemak te vergroten en advertenties te tonen. Door gebruik te maken van deze website, of door op 'Ga verder' te klikken, geef je toestemming voor het gebruik van cookies. Wil je meer informatie over cookies en hoe ze worden gebruikt, bekijk dan ons cookiebeleid.

Meer informatie

  • wwwFan
  • Registratie: januari 2012
  • Laatst online: 19:55
SuperKris schreef op maandag 5 november 2018 @ 22:14:
...
Ik heb ook geprobeerd er een aparte functie van te maken die ik dan aanroep na regel 110, maar het probleem blijft hetzelfde.
...
Dit zou moeten werken. Wel moet je dan de functie die je gemaakt hebt alleen aanroepen als valueButton==HIGH. Anders wordt de functie aangeroepen bij elke wisseling.


C:
1
2
3
4
5
6
// ##### Mysensors code to check doorbell button and sent message ##### 
  if (valueButton != oldValueButton) {                       // Check if the value of the button has changed 
     send(msgDoor.set(valueButton==HIGH ? 1 : 0));           // Transmit the new value
     if( valueButton == HIGH ) belfunctie();
     oldValueButton = valueButton;                           // Change old value so this doenst loop
  }


  • SuperKris
  • Registratie: juni 2010
  • Laatst online: 17:59
wwwFan schreef op dinsdag 6 november 2018 @ 10:13:
[...]

Dit zou moeten werken. Wel moet je dan de functie die je gemaakt hebt alleen aanroepen als valueButton==HIGH. Anders wordt de functie aangeroepen bij elke wisseling.


C:
1
2
3
4
5
6
// ##### Mysensors code to check doorbell button and sent message ##### 
  if (valueButton != oldValueButton) {                       // Check if the value of the button has changed 
     send(msgDoor.set(valueButton==HIGH ? 1 : 0));           // Transmit the new value
     if( valueButton == HIGH ) belfunctie();
     oldValueButton = valueButton;                           // Change old value so this doenst loop
  }

Thanks, dat zal ik nog eens proberen dan. Ik moet de "ringtone" code toch herschrijven wamt de "wait" functie uit de MySensors library houdt de radio misschien wel actief, maar stopt wel de rest van de code.

Eigenlijk ben ik dus op zoek naar een hele simpele en lichte library die de functie van delay/wait vervangt met iets dat alle code door laat lopen. Of werkt dat sowieso niet in een while loop?

Iemand nog tips voor een dergelijke timer library?

  • tsjoender
  • Registratie: april 2005
  • Laatst online: 19:16

  • Joepla
  • Registratie: maart 2005
  • Laatst online: 21:53

Joepla

Geavanceerde micro-elektronica

FuaZe schreef op maandag 5 november 2018 @ 23:26:
[...]
Mijn punt is dat je de apparatuur moet gebruiken die geschikt is voor de functie.

Maar een trend weergeven zoals temperatuurverloop? Dat schrijf je uiteindelijk toch weg naar een SD of via netwerk of naar een PC.
Op zo'n klein scherm is het juist onhandig om die data te analyseren.

Komt nog eens bij dat je Arduino niet heel bijster veel storage heeft, dus het aantal datapunten is dan ook gelimiteerd. (Ja, je kan ook weer een SD kaart toevoegen)

Je hebt voor pi prima touchscreens die je er ook zo op kan duwen.
Maar IMHO is Arduino (de Uno) niet echt een touchscreen ding, het voegt veel overhead toe aan iets wat juist gemaakt is op efficiëntie.
Het mooie van Nextion is dat het betaalbare schermen zijn waar al slimmigheid en opslag in zit en daardoor juist uitermate geschikt voor Arduino's. Maar blijkbaar heb jij een heel ander doel voor ogen dan ik. Hoe dan ook, ik ga er wat ervaring mee opdoen en ben eigenlijk het stadium van leds en 2 regelige LCD's al een tijdje voorbij.
Piepersnijder schreef op dinsdag 6 november 2018 @ 07:36:
[...]
Ik heb een nextion schermpje gebruikt voor het bedienen van een alarmsysteem met arduino.
Grappig! Hoe vind je de programmeeromgeving van Nextion?

Live solarinfo op PVoutput [6,625 kWp]


  • Blomminator
  • Registratie: augustus 2012
  • Laatst online: 20-02 19:02
Nou, hele tijd geleden de Arduino Starter Kit gekocht en vond het toen al superleuk.

Gisteren begonnen.

Les 1) "Get to know your tools" ging lekker. Lampje aan/uit via een schakelaar op het board.
Les 2) "SpaceShip Interface" ging ook goed. Eerste regel programmeren, en ik snap dat wel aardig.


Maar ik heb in deze les een extra LED toegevoegd en wil het volgende;

- bij opstart board knipperen alle LED 2 sec;
- standby = groen aan (Rest uit)
- knop indrukken indrukken = Blauw knippert 2 sec, daarna gaat rood knipperen.

Dit lukt niet. Ik vraag mij of, runt het script altijd van top tot teen?
Dus, ik declareer op regel 1
int switchState = 0;
en sluit mijn IF af.

Springt de Arduino dan weer naar regel 1?
Of blijft mijn IF-loop draaien zolang het statement geldig is?
Dus tussen regel 50 en 60 ?

Want nu krijg ik dus elke keer (met ingedrukte knop)
--> blauw knippert --> Rood knippert (eindeloos...)

En blauw mag maar 1 x knipperen.
Heb ook al een INT geprobeerd in de startup en die dan ophogen na voltooiing (knipperen), maar ook die doet het ook niet, wat doet vermoeden dat de gehele code continu wordt nagelopen.


Los daarvan, het zit wel mooi in elkaar en werkt goed. Alleen die weerstandjes prikken is met dikke vingers wel een gepriegel

A great deal of money has been invested in this project and we can't allow it to fail.


  • Joepla
  • Registratie: maart 2005
  • Laatst online: 21:53

Joepla

Geavanceerde micro-elektronica

@Blomminator Alles in de loop wordt eindeloos herhaald, tenzij je ergens iets programmeert waardoor de rest van je code niet wordt uitgevoerd. Bv. een while, of een for loop die niet stopt.

Zonder de rest van code te kennen, is het lastig om er iets over te zeggen. Post het ff anders hier.

Live solarinfo op PVoutput [6,625 kWp]


  • Blomminator
  • Registratie: augustus 2012
  • Laatst online: 20-02 19:02
Ja, snap ik. Ik ben aardig op weg.
Alles is nu aardig oke.
Echter, spanning op de schakelaar wordt niet gemeten tijdens de Loop. (gok ik)

Hierdoor blijft deze loop of eeuwig lopen, of tot de counter klaar is.
En ik wil dat hij stopt als ik de schakelaar los laat (push switch).


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
int switchState = 0;

void setup() {
  // put your setup code here, to run once:
pinMode(3, OUTPUT);   //green
pinMode(4, OUTPUT);   //red
pinMode(5, OUTPUT);   //red
pinMode(6, OUTPUT);   //blue
pinMode(2, INPUT);    //switch

while 
// opstart sequence
// alle leds laten knipperen. 
 
 (millis() < 1000) {
  delay(75);  
  digitalWrite (3, HIGH);
  digitalWrite (4, HIGH);
  digitalWrite (5, HIGH);
  digitalWrite (6, HIGH);
  delay(75);
  digitalWrite (3, LOW);
  digitalWrite (4, LOW);
  digitalWrite (5, LOW);
  digitalWrite (6, LOW);
    }  
  }
  
void loop() {
  // put your main code here, to run repeatedly:

switchState = digitalRead(2);
// read switch state 

if (switchState == LOW) {
//knop niet ingedrukt

  digitalWrite (3, HIGH);  // green led ON
  digitalWrite (4, LOW);   // red led off
  digitalWrite (5, LOW);   // red led off
  digitalWrite (6, LOW);   // blue led off
  }
  
  else    //knop wel ingedrukt  
  {
 
   for (int blueCounter = 0; blueCounter <= 4 ; blueCounter++)
// blue led laten knipperen
  {
      digitalWrite (3, LOW);
      digitalWrite (4, LOW);
      digitalWrite (5, LOW);
      digitalWrite (6, HIGH);
      delay (200);
      digitalWrite (6, LOW);
      delay (200);
  }

// DIT IS HET ISSUE ; IK WIL EIGENLIJK 
// for switchState = digitalRead(2);
// if (switchState != LOW) {   ..etc
// maar blijkbaar wordt dit niet gecontroleerd tijdens de loop (want hij komt er niet uit..) 
// nu knippert RED 20 x , maar dat wil ik niet... 

  for (int redCounter = 0; redCounter <= 20 ; redCounter++)
  {
      digitalWrite (4, HIGH);   // LED RED LINKS 
      digitalWrite (5, LOW);    // LED RED RECHTS
      delay(150);
      digitalWrite (4, LOW);    // LED RED LINKS 
      digitalWrite (5, HIGH);   // LED RED RECHTS
      delay(150);
      }
  }
}



ik zoek dus iets als

code:
1
2
3
4
5
6
7
8
9
10
while (switchState != LOW);
{
      digitalWrite (4, HIGH);   // LED RED LINKS 
      digitalWrite (5, LOW);    // LED RED RECHTS
      delay(150);
      digitalWrite (4, LOW);    // LED RED LINKS 
      digitalWrite (5, HIGH);   // LED RED RECHTS
      delay(150);
      }
 }



maar dat mag volgens mij niet...


Edit;
Ik snap wel dat de ELSE wordt gestart , en zolang die daar in zit, het zo blijft.
En als ik eruit ga, dan krijg ik ook meteen weer het blauwe lampje erbij. Dus eigenlijk vermoed ik dat dit niet met een if/else moet. Maar goed..

Blomminator wijzigde deze reactie 07-11-2018 11:10 (4%)

A great deal of money has been invested in this project and we can't allow it to fail.


  • Joepla
  • Registratie: maart 2005
  • Laatst online: 21:53

Joepla

Geavanceerde micro-elektronica

@Blomminator Even snel gekeken (ben druk momenteel): als blauw maar 1x mag knipperen, moet je bv. zorgen dat er een variabele is, die weet dat blauw al eens geknippert heeft en voorkomt dat hij blijft knipperen.

Of misschien is dit wel iets voor een zgn. statemachine.

Live solarinfo op PVoutput [6,625 kWp]


  • Blomminator
  • Registratie: augustus 2012
  • Laatst online: 20-02 19:02
Nou, ben enkele uren verder met pielen, maar kom er niet uit.
Als ik aan het einde van mn blauwe knippercyclus een var meegeef

code:
1
var blueran = true


bijvoorbeeld, dan krijg ik enkel maar terug dat deze var niet gedeclareerd is.
En als ik buiten de lus wel declareer, dan 'werkt' het wel, maar reset ik de counter steeds.

Dus nee, ik snap t niet...

A great deal of money has been invested in this project and we can't allow it to fail.


  • Joepla
  • Registratie: maart 2005
  • Laatst online: 21:53

Joepla

Geavanceerde micro-elektronica

Probeer het eens zo te maken dat de rode led knippert zolang je de schakelaar indrukt. Delay is niet de mooiste functie, maar werkt wel en je moet ergens beginnen. Als dat werkt, bouw je de blauwe led erbij. Kleine stapjes tegelijk.

Live solarinfo op PVoutput [6,625 kWp]


  • Blomminator
  • Registratie: augustus 2012
  • Laatst online: 20-02 19:02
Ik heb nu grotendeels wat ik hebben wil... maar 1 ding lijkt niet te pakken. Als ik aan het einde van mijn IF-loop 1 zeg

code:
1
INT BLUE = 1;


en in mijn volgende IF loop vraag

code:
1
if (blue ==1) { doe iets }


dan neemt hij de var niet mee zo lijkt het.
Klopt dit?

Ben er wel achter dat je ze eerst elders (buiten de loop) globaal moet declareren, maar de waarde veranderen + meenemen naar een ander stuk code.. nee.

A great deal of money has been invested in this project and we can't allow it to fail.


  • BosGnoom
  • Registratie: februari 2002
  • Laatst online: 22-02 15:31
@Blomminator Hou je er rekening mee dat C(++) case sensitive is?

Dus BLUE en blue zijn twee verschillende variabelen. Daarnaast, welke programmeertaal ben je gewend?

code:
1
var blue = true

komt mij ook niet erg C achtig over...

  • Blomminator
  • Registratie: augustus 2012
  • Laatst online: 20-02 19:02
Hi,

Ik heb nog nooit geprogrammeerd tot gisteren... Dus geen enkel taal.
Ik heb de Arduino StarterKit gekocht, leek mij leuk. En heb dikke pret zover. Maar het bedenken van wat je wil, en het in 1 x maken is nog een ander verhaal...

Het case sensitive heb ik ontdekt ja.
En het blue = true is niet helemaal wat ik deed.

Ik heb wil aan het einde van mijn IF-loop dat waarde

code:
1
int blueRan = 1;


Dan in de volgende IF-loop check ik of blueRan == 1; is

En, als ik de schakelaar op het board loslaat, moet die weer gereset worden

code:
1
int blueRan = 0;




Andere vragen even;
1)
Kun je in Arduino (het tooltje waarmee ik programmeer en de code naar het board stuur meerdere tabbladen naast elkaar draaien? Want nu zegt deze steeds dat code op tabblad 1 niet goed is, terwijl ik op tabblad 2 zit. Dus het lijkt alsof hij ALLE code checkt, ipv het relevante tabblad. Of is dit meer om je code te groeperen ofzo?

2)
Als je in de Arduino (software pakket dus weer) rechtsboven pijltje --> verwijderen doet. Verwijderen je dan de code van je HD, of sluit je het tabblad? Want ik ben nu volgens mij alles van gisteren kwijt ...

Heb uit het boekje 'Arduino Projects Book' nu net de Love-O-Meter gebouwd. Met een tempSensor en drie LED. Bij 14 graden niets doen, bij 16 1 lampje, bij 18 2 leds en bij 20 of meer alle 3 lampjes! Werkt prima!

A great deal of money has been invested in this project and we can't allow it to fail.


  • mcDavid
  • Registratie: april 2008
  • Laatst online: 21:32
1) Het klopt dat'ie ALLE code checkt ja. Je kunt niet de helft van je code compileren en de andere helft niet.
2) verwijderen betekent inderdaad verwijderen, niet sluiten.

Voor zover ik weet is er geen mogelijkheid om tabbladen niet weer te geven.

zcflevo.nl


  • SuperKris
  • Registratie: juni 2010
  • Laatst online: 17:59
Nogmaals, ik ben een behoorlijke noob als het gaat om het schrijven van code. Ik ben nog steeds bezig met onderstaande code. Dit werkt allemaal helemaal niet. Ik snap ook wel waarom niet denk ik. Overigens werken de timers zo wel (denk ik)

Mijn vraag is dan ook meer over de werking van loops. Als de arduino op start, runt hij 1 keer de setupcode, en vervolgens constant loop toch?

Maar stopt een while loop binnen de "void loop" dan ook direct de "void loop" tot de aan de gewenste voorwaarde van die while loop is gedaan? [JA/NEE]

En als ik een eigen functie maak (dus buiten de "void loop") en een while loop daar in stop (in mijn geval "void ringtone") en ik roep deze roep deze aan vanuit mijn "void loop" stopt, stopt mijn "void loop" dan ook totdat aan de conditie in de while loop is gedaan? [JA/NEE]

Of als ik vanuit mijn "void loop" een functie aanroep, stopt "void loop" dan met lopen totdat de aangeroepen functie klaar is? [JA/NEE]

Indien het antwoord op de vorige vraag JA is, is er dan een methode om "void loop" te laten doorlopen terwijl de aangeroepen functie ook loopt?

- Voor mijn project moet de void loop constant lopen.
- Op een bepaald moment wanneer een knop wordt ingedrukt moet er een code gaan lopen die vaak herhaald moet worden
- Dit dus terwijl de code in void loop blijft doorlopen.

Hoe pak ik dit aan? Moet ik een for of while loop vermijden? En moet ik de "ringtone" code dan zonder een for of while loop binnen void loop plaatsen?


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
/// ##### mysensors setup ######
#define ProjectName "OldPhone" // Name that is vissible in controller
#define ProjectVersion "0,1"          // Version that is vissible in controller
#define MY_DEBUG       // Enable debug prints to serial monitor
#define MY_RADIO_NRF24 // Enable and select radio type attached
#define childIdDoor 1         // child ID number used by mysensors foor doorbell button
#define chuildIdDail_1 101    // child ID number used by mysensors when the number 1 is dailed
#define chuildIdDail_2 102    // child ID number used by mysensors when the number 2 is dailed
#define chuildIdDail_3 103    // child ID number used by mysensors when the number 3 is dailed
#define chuildIdDail_4 104    // child ID number used by mysensors when the number 4 is dailed
#define chuildIdDail_5 105    // child ID number used by mysensors when the number 5 is dailed
#define chuildIdDail_6 106    // child ID number used by mysensors when the number 6 is dailed
#define chuildIdDail_7 107    // child ID number used by mysensors when the number 7 is dailed
#define chuildIdDail_8 108    // child ID number used by mysensors when the number 8 is dailed
#define chuildIdDail_9 109    // child ID number used by mysensors when the number 9 is dailed
#define chuildIdDail_10 110   // child ID number used by mysensors when the number 0 is dailed

// ###### Include libraries #####
#include <SPI.h>              // needed for NRF24
#include <MySensors.h>        // mysensors library
#include <Bounce2.h>          // for debouncing buttons and dail

// ###### I/O pin number setup ######
#define button 3              // input pin activated when doorbell button is pressed
#define edail 8               // input pin activated when dail is used (Enable Dail)
#define pdail 7               // input pin activated with each tick of the dail (Pulse Dial)
#define lbell 4               // output pin to swing bellh hamer left
#define rbell 5               // output Pin to swing bellh hamer right

// ##### Debouncer variables #####
Bounce debouncerButton = Bounce(); // Create button debouncer for doorbell button 
Bounce debouncerEdail = Bounce();  // Create button debouncer for Enable Dail
Bounce debouncerPdail = Bounce();  // Create button debouncer for Pulse Dial 
int valueButton = 0;               // Value 
int oldValueButton = 0;
int valueEdail = 0;
int oldValueEdail = 0;
int valuePdail = 0;
int oldValuePdail = 0;



int dailCount = 0;
int newDailCount = 0;  

unsigned long currentMillis = 0;
unsigned long onPulseMillis = 0;
unsigned long offPulseMillis = 0;
unsigned long ringPauseMillis = 0;
int CoilPowered = 0;
int RingCyclePhase = 0;


int ring = 0;
int ringX = 15;
int onPulse = 20;
int offPulse = 10;
int repeat = 0;
int repeatX = 3;
int ringPause = 2000;

// ##### setup MySensors message containers #####
MyMessage msgDoor(childIdDoor,V_STATUS);         // message container used for doorbell button
MyMessage msgDail_1(chuildIdDail_1,V_STATUS);    // message container used when the number 1 is dailed
MyMessage msgDail_2(chuildIdDail_2,V_STATUS);    // message container used when the number 2 is dailed
MyMessage msgDail_3(chuildIdDail_3,V_STATUS);    // message container used when the number 3 is dailed
MyMessage msgDail_4(chuildIdDail_4,V_STATUS);    // message container used when the number 4 is dailed
MyMessage msgDail_5(chuildIdDail_5,V_STATUS);    // message container used when the number 5 is dailed
MyMessage msgDail_6(chuildIdDail_6,V_STATUS);    // message container used when the number 6 is dailed
MyMessage msgDail_7(chuildIdDail_7,V_STATUS);    // message container used when the number 7 is dailed
MyMessage msgDail_8(chuildIdDail_8,V_STATUS);    // message container used when the number 8 is dailed
MyMessage msgDail_9(chuildIdDail_9,V_STATUS);    // message container used when the number 9 is dailed
MyMessage msgDail_10(chuildIdDail_10,V_STATUS);  // message container used when the number 0 is dailed

void setup()  
{  
//##### I/O pin function setup #####
  pinMode(button,INPUT);    //set the already defined I/O pin as input
  pinMode(edail, INPUT);    //set the already defined I/O pin as input
  pinMode(pdail, INPUT);    //set the already defined I/O pin as input
  pinMode(lbell, OUTPUT);   //set the already defined I/O pin as output
  pinMode(rbell, OUTPUT);   //set the already defined I/O pin as output
 
// ##### Debouncer setup #####
  debouncerButton.attach(button);
  debouncerButton.interval(5);
  debouncerEdail.attach(edail);
  debouncerEdail.interval(5);
  debouncerPdail.attach(pdail);
  debouncerPdail.interval(5);
}

// ##### Function of MySensors that presents all attached sensors to the controller #####
void presentation() { 
  sendSketchInfo(ProjectName, ProjectVersion);   // Send the sketch version information to the gateway and Controller
  present(childIdDoor, S_BINARY);                // Present doorbell button as binary switch
  present(chuildIdDail_1, S_BINARY);             // Present the dailing of number 1 as binary switch
  present(chuildIdDail_2, S_BINARY);             // Present the dailing of number 2 as binary switch
  present(chuildIdDail_3, S_BINARY);             // Present the dailing of number 3 as binary switch
  present(chuildIdDail_4, S_BINARY);             // Present the dailing of number 4 as binary switch
  present(chuildIdDail_5, S_BINARY);             // Present the dailing of number 5 as binary switch
  present(chuildIdDail_6, S_BINARY);             // Present the dailing of number 6 as binary switch
  present(chuildIdDail_7, S_BINARY);             // Present the dailing of number 7 as binary switch
  present(chuildIdDail_8, S_BINARY);             // Present the dailing of number 8 as binary switch
  present(chuildIdDail_9, S_BINARY);             // Present the dailing of number 9 as binary switch
  present(chuildIdDail_10, S_BINARY);            // Present the dailing of number 0 as binary switch
}

void loop() {

  currentMillis = millis();                      // update timer

// ##### debouncer updater ##### 
  debouncerButton.update();                      // Update debouncer for doorbell button
  valueButton = debouncerButton.read();          // Set current value of doorbell button 
  debouncerEdail.update();                       // Update debouncer for enable dail
  valueEdail = debouncerEdail.read();            // Set current value of enable dail
  debouncerPdail.update();                       // Update debouncer for pulse dail 
  valuePdail = debouncerPdail.read();            // Set current value of pulse dail

// ##### Mysensors code to check doorbell button and sent message ##### 
  if (valueButton != oldValueButton) {                       // Check if the value of the button has changed 
     send(msgDoor.set(valueButton==HIGH ? 1 : 0));           // Transmit the new value
     if (valueButton == HIGH ){ 
        ringTone_0(); 
       }
     oldValueButton = valueButton;                           // Change old value so this doenst loop
  }

// ##### Mysensors code to read dail counter and sent message as one individual sensor #####
  switch (newDailCount) {         // Check the current vallue of the completed counter
     case 1:                      // if value is equal to 1 
       send(msgDail_1.set(1));    // Transmit ON message for dail switch 1 
       send(msgDail_1.set(0));    // Transmit OFF message for dail switch 1. Some home automation software prefers this.
       break;                     // end of case
     case 2:                      // if value is equal to 2 
       send(msgDail_2.set(1));    // Transmit ON message for dail switch 2
       send(msgDail_2.set(0));    // Transmit OFF message for dail switch 2. Some home automation software prefers this.
       break;                     // end of case
     case 3:                      // if value is equal to 3 
       send(msgDail_3.set(1));    // Transmit ON message for dail switch 3
       send(msgDail_3.set(0));    // Transmit OFF message for dail switch 3. Some home automation software prefers this.
       break;                     // end of case
     case 4:                      // if value is equal to 4 
       send(msgDail_4.set(1));    // Transmit ON message for dail switch 4 
       send(msgDail_4.set(0));    // Transmit OFF message for dail switch 4. Some home automation software prefers this.
       break;                     // end of case
     case 5:                      // if value is equal to 5 
       send(msgDail_5.set(1));    // Transmit ON message for dail switch 5 
       send(msgDail_5.set(0));    // Transmit OFF message for dail switch 5. Some home automation software prefers this.
       break;                     // end of case
     case 6:                      // if value is equal to 6 
       send(msgDail_6.set(1));    // Transmit ON message for dail switch 6 
       send(msgDail_6.set(0));    // Transmit OFF message for dail switch 6. Some home automation software prefers this.
       break;                     // end of case       
     case 7:                      // if value is equal to 7 
       send(msgDail_7.set(1));    // Transmit ON message for dail switch 7 
       send(msgDail_7.set(0));    // Transmit OFF message for dail switch 7. Some home automation software prefers this.
       break;                     // end of case       
     case 8:                      // if value is equal to 8 
       send(msgDail_8.set(1));    // Transmit ON message for dail switch 8 
       send(msgDail_8.set(0));    // Transmit OFF message for dail switch 8. Some home automation software prefers this.
       break;                     // end of case       
     case 9:                      // if value is equal to 9 
       send(msgDail_9.set(1));    // Transmit ON message for dail switch 9 
       send(msgDail_9.set(0));    // Transmit OFF message for dail switch 9. Some home automation software prefers this.
       break;                     // end of case       
     case 10:                     // if value is equal to 10 
       send(msgDail_10.set(1));    // Transmit ON message for dail switch 10 
       send(msgDail_10.set(0));    // Transmit OFF message for dail switch 10. Some home automation software prefers this.
       break;                     // end of case       
  }
  newDailCount = 0;                // Reset the completed counter so this doesnt loop

  
// ###### Code for checking enable dail and sending state trough serial  ######  
  if (valueEdail != oldValueEdail && valueEdail == HIGH) {          // Check if enable dail has changed AND if its currently its currently activated
     Serial.println("dail is activated...");                        // If so sent message 
     oldValueEdail = valueEdail;}                                   // And change old value so this doenst loop
     else if (valueEdail != oldValueEdail && valueEdail == LOW) {   // Check if enable dail has changed AND if its currently its currently deactivated
     Serial.println("dail is deactivated...");                      // If so sent message
     newDailCount = dailCount;                                      // Write the counted pulses to the New Dail Count
     dailCount = 0;                                                 // Reset the dail count for next dail 
     oldValueEdail = valueEdail;                                    // And change old value so this doenst loop
  }

// ###### Code for checking pusle dail and sending state trough serial ######
  if (valuePdail != oldValuePdail && valueEdail == HIGH) {          // Check if dail pulse has changed AND if currently its currently activated
     if (valuePdail == LOW) {                                       // Only take action when the signal goes from high to low to prevent double count
        dailCount++;                                                 // If the conditions are met increase counter by 1
        Serial.print("Tick! Total ammout of pulses: ");              // Serial print a messagge saying a pulse was detected
        Serial.println (dailCount);                                  // Serial print a the current value of the counter
     }
       oldValuePdail = valuePdail;                                  // Change old value so this doenst loop  
  }
}


void ringTone_0() { 
//     while (repeat < repeatX){                              // start a loop if the number of repeats isnt reached yet (a repeat is the time a bell is ringed pauesed)
//        repeat++;                                           // add 1 count to the "repeat" counter
        while (ring < ringX){                               // start a loop if the number of rings isnt reached yet (a ring is the hammer hitting each bell once)
           currentMillis = millis(); 
           if (CoilPowered == LOW && RingCyclePhase == 0) {                         // only activate coil if the coil is powered down and the ring cycle is complete
              CoilPowered = HIGH;                                                   // enable safety bit that can be checked if coil is powered 
              RingCyclePhase = 1;                                                   // set ring cycle phase to 1 (coil powered to move hammer left)
              digitalWrite(lbell, HIGH);                                            // power coil to swing hammer into left poistion
              onPulseMillis = currentMillis;                                        // set start for timer for the on pulse 
              Serial.println ("left bell high");
           }
           if (currentMillis - onPulseMillis >= onPulse && RingCyclePhase == 1) {   // Check if the set time (onPulse) has passed and the ring cycle is still in phase 1
              digitalWrite(lbell, LOW);                                             // power down coil
              CoilPowered = LOW;                                                    // disable safety bit that can be checked if coil is powered 
              RingCyclePhase = 2;                                                   // set ring cycle phase to 2 (coil powered down after moving hammer left)              
              offPulseMillis = currentMillis;                                       // set start for timer for the off pulse
              Serial.println ("left bell low");
           }
           if (currentMillis - offPulseMillis >= offPulse && RingCyclePhase == 2 && CoilPowered == LOW) {   // check if the set time (offPulse) has passed and the ring cycle is still in phase 2
              CoilPowered = HIGH;                                                   // enable safety bit that can be checked if coil is powered
              RingCyclePhase = 3;                                                   // set ring cycle phase to 3 (coil powered to move hammer right)
              digitalWrite(rbell, HIGH);                                            // power coil to swing hammer into right poistion
              onPulseMillis = currentMillis;                                        // set start for timer for the on pulse 
              Serial.println ("right bell high");
           }
           if (currentMillis - onPulseMillis >= onPulse && RingCyclePhase == 3) {   // check if the set time (onPulse) has passed and the ring cycle is still in phase 3
              digitalWrite(rbell, LOW);                                             // power down coil
              CoilPowered = LOW;                                                    // disable safety bit that can be checked if coil is powered  
              RingCyclePhase = 4;                                                   // set ring cycle phase to 4 (coil powered down after moving hammer left)              
              offPulseMillis = currentMillis;                                       // set start for timer for the off pulse
              Serial.println ("right bell low");
           }
           else if (currentMillis - offPulseMillis >= offPulse && RingCyclePhase == 4) { // check if the set time (offPulse) has passed and the ring cycle is still in phase 4
              RingCyclePhase = 0;                                                   // set ring cycle phase to 0 (ring cycle completed)           
              ring++;                                                               // add 1 count to the "ring" counter    
           }
        }
      wait (ringPause);                   // wait for the amount of ms set for "ringPause"
           if (ring == ringX){              // if the amount of "ring" is the same as the amount set in "ringX"....
              ring = 0;                     // reset the "ring" counter
//              }
//         }
//  if (repeat == repeatX){                   // if the amount of "repeat" is the same as the amount set in "repeatX"....
//     repeat = 0;                            // reset the "repeat" counter
//     } 
//}


  • Joepla
  • Registratie: maart 2005
  • Laatst online: 21:53

Joepla

Geavanceerde micro-elektronica

Voor een project heb ik een blauw 2x16 LCD gebruikt. Staat 24/7 aan en na een maand of 4 is de leesbaarheid drastisch afgenomen. Zowel van de helderheid (blauw) als het contrast (wit) is niet veel meer over. Een ander projectje dat slechts enkele minuten per week ingeschakeld wordt, heeft hetzelfde LCD, maar is nog prima te lezen.

Dacht eerst dat het een kwestie was van voedingsspanning en contrastpotmeter, maar alleen het vervangen van het display was de oplossing. Vraag me af of dit een pechgeval was of dat er gewoon slechte LCD's geleverd worden...

Live solarinfo op PVoutput [6,625 kWp]


  • SuperKris
  • Registratie: juni 2010
  • Laatst online: 17:59
Dit verhaal is inmiddels denk ik duidelijk. Zie hier het voltooide project:
Electronics & Home Automation: Old school phone as doorbell and domoitcs inte...!

Ander vraagje, Is er iemand bekend met deze displays?
https://nl.aliexpress.com...y-Module/32683094040.html



Het gaat mij vooral om hoe ik het I2C adres kan wijzigen. Deze OLED's hebben een SH1106 schip. De overduidelijke jumper die te zien zijn, zijn voor het omwisselen van de VCC en GND pin. Niet voor het adres helaas.

Ik wil het adres kunnen wijzigen omdat ik 2 displays per arduino gebruik.

SuperKris wijzigde deze reactie 19-11-2018 19:08 (15%)


  • farlane
  • Registratie: maart 2000
  • Laatst online: 21:10
Two bit slave addresses (0111100 and 0111101) are reserved for the SH1106. The least significant bit of the slave address is set by connecting the input SA0 to either logic 0(VSS) or 1(VDD1).
Alleen de vraag of je bij dat pinnetje kunt ..... Chinees eh....

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.


  • SuperKris
  • Registratie: juni 2010
  • Laatst online: 17:59
farlane schreef op maandag 19 november 2018 @ 21:16:
[...]


Alleen de vraag of je bij dat pinnetje kunt ..... Chinees eh....
Ja, dat had ik ook al teruggevonden, maar die chip zit achter de display. Ik heb al 1 hoek afgebroken in een poging tot er achter komen. Het is gangbaar bij deze displays dat er een jumper voor het adres zit.

Vermoedelijk zal het aanpassen van het adres ook wel kunnen via 1 van de weerstanden, maar welke he....

  • SnowDude
  • Registratie: januari 2002
  • Laatst online: 21-02 14:58

SnowDude

Nu met 400+ RWHP!

SuperKris schreef op dinsdag 20 november 2018 @ 10:22:
[...]


Ja, dat had ik ook al teruggevonden, maar die chip zit achter de display. Ik heb al 1 hoek afgebroken in een poging tot er achter komen. Het is gangbaar bij deze displays dat er een jumper voor het adres zit.

Vermoedelijk zal het aanpassen van het adres ook wel kunnen via 1 van de weerstanden, maar welke he....
Ik ga er niet van uit dat je via een van de weerstanden het adres kan wijzigen. Als er adres selectie mogenlijk is dan wordt dat ook door de Chinezen echt wel zichtbaar gemaakt.

Ik denk eerder dat dit een chip-on-board PCB is en dat de adres pins hard-wired zijn.

Voorbeeld van chip-on-board:



All electric components run on smoke. If you let the smoke out, they won't work anymore. Mijn SingleTurbo Supra


  • SuperKris
  • Registratie: juni 2010
  • Laatst online: 17:59
SnowDude schreef op dinsdag 20 november 2018 @ 10:57:
[...]

Ik ga er niet van uit dat je via een van de weerstanden het adres kan wijzigen. Als er adres selectie mogenlijk is dan wordt dat ook door de Chinezen echt wel zichtbaar gemaakt.

Ik denk eerder dat dit een chip-on-board PCB is en dat de adres pins hard-wired zijn.

Voorbeeld van chip-on-board:

[Afbeelding]

[Afbeelding]
Die kans is natuurlijk groot, maar met een beetje geluk hebben ze een weerstand gebruikt om hem naar voeding of GND te trekken.

  • Springuin
  • Registratie: juli 2002
  • Laatst online: 22-02 20:12
Joepla schreef op zaterdag 17 november 2018 @ 09:41:
Voor een project heb ik een blauw 2x16 LCD gebruikt. Staat 24/7 aan en na een maand of 4 is de leesbaarheid drastisch afgenomen. Zowel van de helderheid (blauw) als het contrast (wit) is niet veel meer over. Een ander projectje dat slechts enkele minuten per week ingeschakeld wordt, heeft hetzelfde LCD, maar is nog prima te lezen.

Dacht eerst dat het een kwestie was van voedingsspanning en contrastpotmeter, maar alleen het vervangen van het display was de oplossing. Vraag me af of dit een pechgeval was of dat er gewoon slechte LCD's geleverd worden...
Leds nemen af in helderheid naarmate de gebruiksduur vordert. In de praktijk zie je dat bij witte en blauwe leds het duidelijkst. Wat achtergrond info: https://www.radio-electro...etime-expectancy-mtbf.php

Ik heb ooit een toetsenbord met blauwe leds gehad: na een paar jaar gebruik waren capslock en scrolllock nog steeds fel en numlock een stuk minder fel.

Springuin.nl: Electronic product development | tweakblog


  • Joepla
  • Registratie: maart 2005
  • Laatst online: 21:53

Joepla

Geavanceerde micro-elektronica

@Springuin Dat de helderheid van LEDs afneemt met de tijd, is bekend. Zoals in jouw link ook staat, is een levensduur van 50.000 tot 100.000 uur te verwachten. In mijn geval hebben we het over minder dan 3000 uur en dat is wat mij verrast. Dat is echt extreem weinig.

Het 2e display is sinds vorige week in bedrijf. Eens kijken hoe lang deze het uithoudt...

Joepla wijzigde deze reactie 20-11-2018 17:05 (14%)

Live solarinfo op PVoutput [6,625 kWp]


  • mcDavid
  • Registratie: april 2008
  • Laatst online: 21:32
50.000 tot 100.000 is volgens mij wel érg veel hoor. Meestal zie je getallen rond de 10.000-20.000 uur.

Wel is bekend dat blauwe led's (en dus ook witte led's) relatief snel degraderen. Hoewel hedendaagse led's (zoals die in oled displays) dat inmiddels redelijk onder controle lijken te hebben, kan het maar zo dat voor zo'n displaytje gewoon de goedkoopste van de goedkoopste led zit.

Daarnaast heb je kans dat ie gewoon dik boven zijn rated werkstroom gezeten heeft. Als je de backlight kunt dimmen zou ik dat zeker aanraden, kan de leeftijd flink verlengen.

zcflevo.nl


  • Joepla
  • Registratie: maart 2005
  • Laatst online: 21:53

Joepla

Geavanceerde micro-elektronica

@mcDavid Ben het met je eens dat 100.000 uur voor een LCD dat minder dan 2 euro kost, niet realistisch is.
Dimmen: ik zou er een weerstandje tussen kunnen plaatsen, of PWM aansturen. Op zich geen gek idee om zo de levensduur wat te verlengen.

Live solarinfo op PVoutput [6,625 kWp]


  • farlane
  • Registratie: maart 2000
  • Laatst online: 21:10
@SuperKris Optie: https://learn.adafruit.co...iplexer-breakout/overview

farlane wijzigde deze reactie 20-11-2018 23:07 (7%)

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.


  • kitao
  • Registratie: juli 2012
  • Laatst online: 21:12
Hallo,

sommige zullen mij misschien nog herinneren, ben inmiddels paar jaartjes weg geweest (4) en heb toen alle elek in doos gestopt.
dat was de derde keer in mijn hobby-studie-'carriere'

de doos zit nog steeds dicht maar kwam laatst toch iets leuks tegen wat ik hier wil delen.

namelijk tinkercad

https://www.tinkercad.com/learn/circuits/learning

en samen met deze video-serie is er voor beginners vrijwel geen kosten aan verbonden

https://arduino-lessen.nl/

mijn persoonlijke focus (op dit moment en hopelijk hou ik het vol zonder in de hoek te leggen), is het proberen te leren van c++ met visual studio 2017.

http://www.ronkes.nl/oldprogrammeren/index.html

veel toetsenbord dus en weinig geknoop of geknutsel en stilstand is geen achteruitgang, wat ik eerder heb toegepast komt nog steeds van pas.


iedereen nog de beste wensen voor 2019 :)

  • Goner
  • Registratie: mei 2002
  • Laatst online: 21-02 14:03

Goner

What can I do you for ?

hoi,
niet echt mijn terrein dit, dus wellicht domme vraag.
m'n dochter is bezig met een projectje op een Arduino, met ledlampjes. Vroeg me af wat voor krimpkousjes (?) jullie gebruiken om de 2 pootjes van de led te verbinden met power-kabeltjes ??
en wie verkoopt ze ?

Goner wijzigde deze reactie 14-01-2019 20:48 (4%)

Gigabyte GA-MA770T-UD3 / AMD Phenom II X4 955e / 8GB DDR3-SDRAM / NVIDIA GeForce GTX 750 Ti / Acer K222HQL / Windows 7 Home Premium SP1 (64-bit)


  • Yucon
  • Registratie: december 2000
  • Laatst online: 22:26

Yucon

*broem*

Goner schreef op maandag 14 januari 2019 @ 20:47:
hoi,
niet echt mijn terrein dit, dus wellicht domme vraag.
m'n dochter is bezig met een projectje op een Arduino, met ledlampjes. Vroeg me af wat voor krimpkousjes (?) jullie gebruiken om de 2 pootjes van de led te verbinden met power-kabeltjes ??
en wie verkoopt ze ?
Geen. Maar als, dan gewoon normale. Zou je bij conrad moeten kunnen krijgen.

Voor een led heb je trouwens meestal wel een weerstandje nodig, dus als je de led pootjes wilde isoleren en dan direct op de pinnen wil aansluiten gaat dat niet geweldig goed.

  • mcDavid
  • Registratie: april 2008
  • Laatst online: 21:32
Heb je daar uberhaupt verschillende soorten van? Ik kies altijd gewoon de goedkoopste :P

En bestel ze meestal bij een bezorgchinees op ebay of aliexpress. Maar in een bouwmarkt of zo vind je ze ook wel.

zcflevo.nl


  • farlane
  • Registratie: maart 2000
  • Laatst online: 21:10
Goner schreef op maandag 14 januari 2019 @ 20:47:
hoi,
niet echt mijn terrein dit, dus wellicht domme vraag.
m'n dochter is bezig met een projectje op een Arduino, met ledlampjes. Vroeg me af wat voor krimpkousjes (?) jullie gebruiken om de 2 pootjes van de led te verbinden met power-kabeltjes ??
en wie verkoopt ze ?
Is het voor een "eindprodukt'? Ander zou ik gewoon een breadboard gebruiken, hoef je helemaal geen draadjes te solderen.

En anders https://www.allekabels.nl/kabel_accessoires/krimpkous.html perhaps....

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.


  • Goner
  • Registratie: mei 2002
  • Laatst online: 21-02 14:03

Goner

What can I do you for ?

Bedankt voor alle reacties.
Oplossing was inderdaad breadbord en solderen. Krimpkousjes zijn er gewoon niet zo smal. Trouwens een geweldige winkel gevonden voor dit soort spullen, Radio Twenthe in Den Haag.

Op naar volgende uitdaging ; geluid en licht tegelijk aansturen. Maar eens gaan Googelen. Wel grappig, ik heb jaaaaren geprogrammeerd en nu kan ik misschien m'n dochter die een grafische opleiding volgt, helpen ;-)

Gigabyte GA-MA770T-UD3 / AMD Phenom II X4 955e / 8GB DDR3-SDRAM / NVIDIA GeForce GTX 750 Ti / Acer K222HQL / Windows 7 Home Premium SP1 (64-bit)


  • ThinkPad
  • Registratie: juni 2005
  • Nu online

ThinkPad

Moderator Duurzame Energie & Domotica

L460

Ik heb een woordklok gemaakt, erg leuk geworden. De basis is dit project: https://bitlair.nl/Projects/word_clock_workshop

De gebruikte firmware is deze: https://github.com/niekpr...lob/master/word-clock.ino

Nu is het zo dat de kleuren statisch ingesteld zijn bij het uploaden. Ik zou graag elk uur een andere kleur willen tonen. Ik ben al wat aan het proberen geweest, maar krijg het niet voor elkaar.

Wat ik heb geprobeerd is om de #define op regel 59-61 te wijzigen in:

C++:
1
2
3
int R_VALUE = 0;
int G_VALUE = 255;
int B_VALUE = 0;



Op regel 278 heb ik dit ertussen gezet:

C++:
1
if (current_hourword==18) R_VALUE = 0, G_VALUE = 0, B_VALUE = 255;



Maar helaas blijven de LEDs groen en gaan ze niet op blauw :-(
De sketch compileert overigens wel zonder fouten verder.

Waar in het script moet ik de code voor het aanpassen van de kleuren zetten? Als ik dat eenmaal weet kom ik er zelf wel uit om elk uur wat anders te tonen vermoed ik.

ThinkPad wijzigde deze reactie 19-01-2019 18:15 (3%)

Gas besparen door CV-tuning | Elektriciteit besparen
Geen (Domoticz) vragen via privébericht die ook via het forum kunnen a.u.b.


  • Vuikie
  • Registratie: december 2003
  • Laatst online: 17:15
ThinkPad schreef op zaterdag 19 januari 2019 @ 18:12:
Ik heb een woordklok gemaakt, erg leuk geworden. De basis is dit project: https://bitlair.nl/Projects/word_clock_workshop

De gebruikte firmware is deze: https://github.com/niekpr...lob/master/word-clock.ino

Nu is het zo dat de kleuren statisch ingesteld zijn bij het uploaden. Ik zou graag elk uur een andere kleur willen tonen. Ik ben al wat aan het proberen geweest, maar krijg het niet voor elkaar.

Wat ik heb geprobeerd is om de #define op regel 59-61 te wijzigen in:

C++:
1
2
3
int R_VALUE = 0;
int G_VALUE = 255;
int B_VALUE = 0;



Op regel 278 heb ik dit ertussen gezet:

C++:
1
if (current_hourword==18) R_VALUE = 0, G_VALUE = 0, B_VALUE = 255;



Maar helaas blijven de LEDs groen en gaan ze niet op blauw :-(
De sketch compileert overigens wel zonder fouten verder.

Waar in het script moet ik de code voor het aanpassen van de kleuren zetten? Als ik dat eenmaal weet kom ik er zelf wel uit om elk uur wat anders te tonen vermoed ik.
Hey cool, ik heb ook een woordklok gemaakt, alleen dan met een ESP-01 :Y)



Even terugkomend op jouw'n probleem.

Als ik dit zo lees dan rekenen ze de klok om van 24 naar 12 uur

C++:
1
2
3
4
5
6
7
8
    // calculate target brightnesses:
    int current_hourword = hour();
    if(current_hourword>12) current_hourword = current_hourword - 12; // 12 hour clock, where 12 stays 12 and 13 becomes one
    if(current_hourword==0) current_hourword = 12;            // 0 is also called 12

    int next_hourword = hour()+1;
    if(next_hourword>12) next_hourword = next_hourword - 12;      // 12 hour clock, where 12 stays 12 and 13 becomes one
    if(next_hourword==0) next_hourword = 12;              // 0 is also called 12



Dus current_hourword is op regel 278 altijd minder dan 18 (Zie regel 272):

C++:
1
if (current_hourword==18) R_VALUE = 0, G_VALUE = 0, B_VALUE = 255;


Bovenstaande gaat dus niet werken, probeer het volgende eens:

C++:
1
if (hour()==18) R_VALUE = 0, G_VALUE = 0, B_VALUE = 255;



Of zet jou originele code tussen de huidige regel 271 en 272 in, zodat current_hourword nog niet is omgerekend.

C++:
1
2
3
4
5
6
7
8
9
    // calculate target brightnesses:
    int current_hourword = hour();
    if (current_hourword==18) R_VALUE = 0, G_VALUE = 0, B_VALUE = 255;
    if(current_hourword>12) current_hourword = current_hourword - 12; // 12 hour clock, where 12 stays 12 and 13 becomes one
    if(current_hourword==0) current_hourword = 12;            // 0 is also called 12

    int next_hourword = hour()+1;
    if(next_hourword>12) next_hourword = next_hourword - 12;      // 12 hour clock, where 12 stays 12 and 13 becomes one
    if(next_hourword==0) next_hourword = 12;              // 0 is also called 12

Vuikie wijzigde deze reactie 20-01-2019 12:07 (13%)


  • ThinkPad
  • Registratie: juni 2005
  • Nu online

ThinkPad

Moderator Duurzame Energie & Domotica

L460

Vuikie schreef op zondag 20 januari 2019 @ 12:03:
[...]
Bovenstaande gaat dus niet werken, probeer het volgende eens:

C++:
1
if (hour()==18) R_VALUE = 0, G_VALUE = 0, B_VALUE = 255;


[...]
Thanks, dit werkt :)

Heb nu het volgende om de kleur te laten wisselen:

C++:
1
2
    //Change color every hour
    if (minute()==0 && second()==0) R_VALUE = random(0,255), G_VALUE = random(0,255), B_VALUE = random(0,255);


Ik kan alleen geen miliseconden opgeven (de functie milliseconds() kent de IDE niet). Dit zorgt ervoor dat hij heel even door de kleuren wisselt voordat hij op een nieuwe kleur staat. Hoe kan ik dat nog voorkomen? (anders is het te onrustig in m'n ooghoek). Heb geprobeerd om zelf miliseconden te berekenen (second() / 1000) maar dat had geen effect.

ThinkPad wijzigde deze reactie 20-01-2019 16:02 (5%)

Gas besparen door CV-tuning | Elektriciteit besparen
Geen (Domoticz) vragen via privébericht die ook via het forum kunnen a.u.b.


  • Rowwan
  • Registratie: november 2000
  • Laatst online: 22:25
Begrijp je ook waarom hij dat doet? Hij blijft de volledige seconde de kleuren wisselen. Je kunt dit oplossen door nog een variabele te gebruiken.


code:
1
2
3
//Change color every hour
    if (minute()==0 && second()==0 && !completed) R_VALUE = random(0,255), G_VALUE = random(0,255), B_VALUE = random(0,255), completed = true;
    if (minute()==0 && second()==1) completed = false;


  • ThinkPad
  • Registratie: juni 2005
  • Nu online

ThinkPad

Moderator Duurzame Energie & Domotica

L460

@Rowwan Bedankt, het werkt nu helemaal naar wens :)

Gas besparen door CV-tuning | Elektriciteit besparen
Geen (Domoticz) vragen via privébericht die ook via het forum kunnen a.u.b.


  • tsjoender
  • Registratie: april 2005
  • Laatst online: 19:16
@ThinkPad Tof project! Heb je de faceplate met de woorden met een lasersnijder gemaakt of heb je gewoon een geprint vel papier gebruikt waar het licht op de onbedrukte delen meer doorschijnt?

  • SToRM666
  • Registratie: juli 2005
  • Laatst online: 22-02 19:22
Ondertussen heb ik alweer enkele maanden geen updates meer geplaatst, maar ik heb niet helemaal stil gezeten! :) Ik heb enkele maanden geleden een 3D printer gekocht en heb toen besloten om de behuizing van mijn wake-up light dus ook te 3D printen. Ik heb eerst wat moeten leren werken met Fusion 360, maar dat begint nu al aardig te lukken.

Ik heb gisteren de bodem dan eindelijk afgeprint en hieronder het resultaat. Het ontwerp is nog altijd ongeveer hetzelfde, maar dan vooral beter en netter:


Oud en nieuw naast elkaar, toch wel een kleine upgrade denk ik zo :D


Alles past er perfect in tot nu toe. Ik heb er wel redelijk wat tijd in gestoken met kleine testprints om alles zo goed mogelijk passend te krijgen:



Wat kleine details, zoals een sleuf voor de geheugenkaart, verzonken gaten voor de schroeven en ook alvast iets verzonken rondjes voorzien voor van die rubberen voetjes:


Dit is hetgene wat er nog in moet komen:


Er is nog wel wat werk aan. Het deksel is al redelijk ver klaar, maar ik moet nu nog eerst wat beugeltjes en houders voor onder andere de Arduino ontwerpen en printen.
De wekker gaat uiteindelijk ook in een two-tone geprint worden, dus het deksel krijgt een andere kleur, wat wel erg mooi gaat worden denk ik zo :)

Upates volgen binnenkort!

SToRM666 wijzigde deze reactie 21-01-2019 23:57 (3%)

PSN id: NL_SToRM


  • ThinkPad
  • Registratie: juni 2005
  • Nu online

ThinkPad

Moderator Duurzame Energie & Domotica

L460

tsjoender schreef op zondag 20 januari 2019 @ 17:35:
@ThinkPad Tof project! Heb je de faceplate met de woorden met een lasersnijder gemaakt of heb je gewoon een geprint vel papier gebruikt waar het licht op de onbedrukte delen meer doorschijnt?
Lasersnijder heb ik helaas niet in m’n omgeving. Wat ik heb gedaan is de faceplate printen met m’n laserprinter. Om het zwart goed lichtdicht te krijgen heb ik hetzelfde vel er 6x doorheen gehaald. Kost best veel toner denk ik, maar het werkt wel goed.

Het raster heeft mrs. * ThinkPad gemaakt van karton en hotglue :D

ThinkPad wijzigde deze reactie 20-01-2019 20:12 (7%)

Gas besparen door CV-tuning | Elektriciteit besparen
Geen (Domoticz) vragen via privébericht die ook via het forum kunnen a.u.b.


  • tsjoender
  • Registratie: april 2005
  • Laatst online: 19:16
ThinkPad schreef op zondag 20 januari 2019 @ 20:07:
[...]

Lasersnijder heb ik helaas niet in m’n omgeving. Wat ik heb gedaan is de faceplate printen met m’n laserprinter. Om het zwart goed lichtdicht te krijgen heb ik hetzelfde vel er 6x doorheen gehaald. Kost best veel toner denk ik, maar het werkt wel goed.

Het raster heeft mrs. * ThinkPad gemaakt van karton en hotglue :D
Goed idee. Ik heb ook geen lasersnijder tot mijn beschikking, maar een laserprinter wel :) Bij het volgende bezoek aan de Ikea meteen maar zo'n fotolijstje meenemen. Dank voor het delen!

  • SToRM666
  • Registratie: juli 2005
  • Laatst online: 22-02 19:22
De beugeltjes voor de binnenkant zijn af, dus het aansluiten van de componenten kan beginnen! :D





Ik ben wel enorm tevreden met het resultaat tot nu toe 8)
Nu nog proberen om alle stroomdraadjes netjes aan te sluiten en weg te werken.

SToRM666 wijzigde deze reactie 24-01-2019 22:42 (9%)

PSN id: NL_SToRM


  • SToRM666
  • Registratie: juli 2005
  • Laatst online: 22-02 19:22
Vandaag zo goed als alles terug aangesloten. Vooral het wegwerken van de te lange + en - draden was wat werk, de rest ging wel vlot moet ik zeggen :)







De ledstrip is voor nu nog met de oude bekabeling en de led knop moet ik ook nog even solderen. En dan nog even de lichtsensor op de juiste lengte, maar dan moet ik eerst nog een beugeltje maken waar die in past.

Morgen even de bedrading nalopen en testen of alles nog werkt.

SToRM666 wijzigde deze reactie 26-01-2019 20:25 (12%)

PSN id: NL_SToRM


  • SToRM666
  • Registratie: juli 2005
  • Laatst online: 22-02 19:22
Gisteren de eerste test en alles werkte nog :)



Daarna de aansluiting voor de ledstrip en de snooze knop gesoldeerd:



De snooze knop is nu ook vastgezet met een 3D geprinte beugel. De kabels voor de andere knoppen gaan ook aangepast worden. Het tweaken van de software ben ik nu ook mee bezig.

PSN id: NL_SToRM


  • Fore!
  • Registratie: februari 2009
  • Laatst online: 08:58
Heeft iemand ervaring met het toepassen van flexsensoren? Ik kan er in algemeenheid voldoende over vinden, maar ik wil het als bewegingsdetector misbruiken in traptreden.
Dmv de flexsensoren onder de traptreden kan ik het verschil uitzoeken ( bijvoorbeeld ;) een kat en mens).

Toepassingen van detectie op de trap zie ik alleen terug komen als bewegingsensoren.
Ik lees dat gewicht sensoren ongeschikt zijn om op te staan en stuk kunnen gaan, dus dat lijkt af te vallen.

Of kun je met bewegingsensoren ook de "hoeveelheid" beweging meten? En dan niet zo zeer de afstand gevoeligheid. Of moet ik daar dan toch kleine camera's voor inzetten en het beeld analyseren?(absoluut niet de voorkeur)

Ik zie namelijk online helemaal geen toepassingen van flexsensoren in trappen. Zijn deze daar niet gevoelig genoeg voor om de kromming te meten aan de onderkant kan de trede?

Ik ben overigens beginnende, en dit leek mij een redelijke simpele 2e stap om mee verder te gaan.
Zo 6 treden monitoren, 3 boven en beneden om de richting te bepalen en uit eindelijk deze data gebruiken voor schakelingen in domotica software.

  • vincent_1971
  • Registratie: juni 2004
  • Laatst online: 03:25
Fore! schreef op dinsdag 29 januari 2019 @ 07:34:
Heeft iemand ervaring met het toepassen van flexsensoren? Ik kan er in algemeenheid voldoende over vinden, maar ik wil het als bewegingsdetector misbruiken in traptreden.
Dmv de flexsensoren onder de traptreden kan ik het verschil uitzoeken ( bijvoorbeeld ;) een kat en mens).

Toepassingen van detectie op de trap zie ik alleen terug komen als bewegingsensoren.
Ik lees dat gewicht sensoren ongeschikt zijn om op te staan en stuk kunnen gaan, dus dat lijkt af te vallen.

Of kun je met bewegingsensoren ook de "hoeveelheid" beweging meten? En dan niet zo zeer de afstand gevoeligheid. Of moet ik daar dan toch kleine camera's voor inzetten en het beeld analyseren?(absoluut niet de voorkeur)

Ik zie namelijk online helemaal geen toepassingen van flexsensoren in trappen. Zijn deze daar niet gevoelig genoeg voor om de kromming te meten aan de onderkant kan de trede?

Ik ben overigens beginnende, en dit leek mij een redelijke simpele 2e stap om mee verder te gaan.
Zo 6 treden monitoren, 3 boven en beneden om de richting te bepalen en uit eindelijk deze data gebruiken voor schakelingen in domotica software.
Zou voor een druk sensor gaan.
B.v.
https://www.sparkfun.com/products/11207

Zou zelf niet voor flexsensor gaan, de kromming van de hoek zal minimaal zijn als een huisdier erop loopt laat staan de weerstandsverandering.

  • SToRM666
  • Registratie: juli 2005
  • Laatst online: 22-02 19:22
Fore! schreef op dinsdag 29 januari 2019 @ 07:34:
Heeft iemand ervaring met het toepassen van flexsensoren? Ik kan er in algemeenheid voldoende over vinden, maar ik wil het als bewegingsdetector misbruiken in traptreden.
Dmv de flexsensoren onder de traptreden kan ik het verschil uitzoeken ( bijvoorbeeld ;) een kat en mens).

Toepassingen van detectie op de trap zie ik alleen terug komen als bewegingsensoren.
Ik lees dat gewicht sensoren ongeschikt zijn om op te staan en stuk kunnen gaan, dus dat lijkt af te vallen.
Is het geen optie om toch bewegingssensoren te gebruiken en ze dan zodanig te monteren en/of af te stellen zodat enkel mensen de sensoren triggeren?

PSN id: NL_SToRM


  • Fore!
  • Registratie: februari 2009
  • Laatst online: 08:58
vincent_1971 schreef op dinsdag 29 januari 2019 @ 10:12:
[...]


Zou voor een druk sensor gaan.
B.v.
https://www.sparkfun.com/products/11207

Zou zelf niet voor flexsensor gaan, de kromming van de hoek zal minimaal zijn als een huisdier erop loopt laat staan de weerstandsverandering.
Idee is juist om te zorgen dat die beesten ongemerkt het huis rond struinen. Voor hen zal de automatisering geen toegevoegde waarde zijn :P.
Dus als de flexsensor het huisdier niet kan detecteren is niet direct een probleem, wellicht een gemis voor toepassing in die toekomst. Dus als de detectie van een mens minimaal is, is dat nog steeds voldoende :) .

Overigens lees ik uit de artikelomschrijving dat erop staan dus geen probleem is? Enkele blogs nageplozen en die gaven aan dat dit nogal teer spul is.
SToRM666 schreef op dinsdag 29 januari 2019 @ 11:38:
[...]

Is het geen optie om toch bewegingssensoren te gebruiken en ze dan zodanig te monteren en/of af te stellen zodat enkel mensen de sensoren triggeren?
Uiteindelijk is dat met wat tweaking te doen, maar het liefst heb ik alles zoveel mogelijk uit het zicht. Onder de traptrede of onder het stukje tapijt vind ik dan het mooist. (daarbij is de flexsensor ook denk ik het makkelijkst te plaatsen en vervangen.

  • Atmoz
  • Registratie: juli 2001
  • Laatst online: 18:31

Atmoz

Techno!!

Ik snap even niet helemaal waarom onderstaande code niet doet wat ik wil :?


code:
1
2
3
4
5
6
7
  while(Serial.available() < 3);
  
  String SerialString = Serial.readString();
  int Getal = SerialString.toInt();
  val = map(Getal, 0, 320, 0, 180);  
  myservo.write(val);  
  Serial.flush();



Er komt constant (meerdere malen per seconde) data binnen op de seriële poort.
Dit zijn getallen tussen de 0 en de 320. Met de map-functie maak ik daar 0-180 van.
Precies wat de servo "nodig" heeft om te bewegen.

De servo beweegt wel, maar niet constant. Eigenlijk maar heel soms... om de paar seconde doet hij even iets. Ik zou verwachten dat de servo de hele tijd "bezig" is om weer naar de nieuwe positie te gaan...(die de Arduino tenslotte per seconde meerdere malen binnen krijgt!)

Waarom doet hij dat niet?


[edit]

Opgelost :9

Gebruik nu dit: Serial.readBytesUntil('\n', buffer, 7); en dan werkt het perfect 8)

Atmoz wijzigde deze reactie 02-02-2019 12:16 (6%)

MSI Z170A GAMING M5 :: i7-6700K :: 32GB DDR4 :: 2x 512GB Samsung 950Pro raid0 :: GTX 1080Ti :: LG 32UD99 32" 4K HDR :: Logitech G series gaming gear


  • SToRM666
  • Registratie: juli 2005
  • Laatst online: 22-02 19:22
De wake-up light werkt prima, ik heb m al een aantal dagen gebruikt. Ik heb echter nog 1 vervelend probleem en dat is de mp3 module. Het probleem dat ik heb is dat ik altijd ruis hoor uit de speaker als die niet in gebruik is en ik vraag me af hoe ik dat kan fixen.

In het begin deed ik al direct een init van die module bij het opstarten van de wekker, maar dit heb ik nu zo aangepast dat ik een init doe als ik een geluid moet afspelen en dan achteraf direct het geluid uit en de seriële verbinding afsluiten, maar zelfs dit helpt niet... Sterker nog, zelfs voordat ik een init doe hoor ik al ruis. Ik heb al wat zitten googelen en daar las ik dat ik 1K Ohm weerstandjes tussen de rx en tx aansluitingen moet doen, maar dat geeft geen verschil. Een ander idee was om een NPN te gebruiken, maar dan doet ie helemaal niets meer...

Iemand nog andere ideeën? Ik heb dus 4 aansluitingen: +, - , rx en tx.

PSN id: NL_SToRM


  • tsjoender
  • Registratie: april 2005
  • Laatst online: 19:16
SToRM666 schreef op zondag 3 februari 2019 @ 14:56:
De wake-up light werkt prima, ik heb m al een aantal dagen gebruikt. Ik heb echter nog 1 vervelend probleem en dat is de mp3 module. Het probleem dat ik heb is dat ik altijd ruis hoor uit de speaker als die niet in gebruik is en ik vraag me af hoe ik dat kan fixen.

In het begin deed ik al direct een init van die module bij het opstarten van de wekker, maar dit heb ik nu zo aangepast dat ik een init doe als ik een geluid moet afspelen en dan achteraf direct het geluid uit en de seriële verbinding afsluiten, maar zelfs dit helpt niet... Sterker nog, zelfs voordat ik een init doe hoor ik al ruis. Ik heb al wat zitten googelen en daar las ik dat ik 1K Ohm weerstandjes tussen de rx en tx aansluitingen moet doen, maar dat geeft geen verschil. Een ander idee was om een NPN te gebruiken, maar dan doet ie helemaal niets meer...

Iemand nog andere ideeën? Ik heb dus 4 aansluitingen: +, - , rx en tx.
Je vertelt niet welke module je gebruikt :) Ik zag wel een foto in een van je eerdere posts, maar herkende 'm niet.

Die 1kOhm weerstanden tussen TX en RX zijn waarschijnlijk ter bescherming van die IO pinnen door de stroom te beperken. Dus op zich prima om die te laten zitten. Kun je het volume ook regelen? Je zou dan misschien het volume steeds naar 0 (mute) kunnen zetten als er niets afgespeeld wordt.

  • SToRM666
  • Registratie: juli 2005
  • Laatst online: 22-02 19:22
tsjoender schreef op zondag 3 februari 2019 @ 19:51:
Je vertelt niet welke module je gebruikt :) Ik zag wel een foto in een van je eerdere posts, maar herkende 'm niet.

Die 1kOhm weerstanden tussen TX en RX zijn waarschijnlijk ter bescherming van die IO pinnen door de stroom te beperken. Dus op zich prima om die te laten zitten. Kun je het volume ook regelen? Je zou dan misschien het volume steeds naar 0 (mute) kunnen zetten als er niets afgespeeld wordt.
Alvast bedankt voor het meedenken. Het volume op 0 zetten doe ik inderdaad al, maar dat doet niets. Zelfs al voordat ik een geluid afspeel (en dus nog geen seriële connectie heb gemaakt met de mp3 module), hoor ik al ruis. Dus volgens mij ligt het meer aan de manier van aansluiten dan aan de programmatie, maar ik kan het mis hebben uiteraard...

Ik gebruik de volgende module: https://www.dx.com/p/uart...uino-2073960#.XFdA9lxKibg

Misschien ook handig om erbij te vermelden hoe het ongeveer aangesloten zit. Vanaf de voeding heb ik een directe aansluiting op de pcb waar deze mp3 speler en de ledstrip op aangesloten zitten. Vanaf de voeding gaat er nog een aparte 5V/GND naar de usb van de Arduino (dat is dus een doorgeknipte usb kabel). Vanaf de Arduino gaan er dan weer 5V en GND draden naar de pcb om de rest van de componenten van stroom te voorzien.

De GND van de directe verbinding naar de pcb en de GND van de Arduino zitten ook onderling verbonden op de PCB. Misschien dat daar het probleem zit?

Ik heb de module er nu toch uit, dus misschien dat ik eens een kleine opstelling maak om wat testen te doen.

SToRM666 wijzigde deze reactie 03-02-2019 20:39 (14%)

PSN id: NL_SToRM


  • tsjoender
  • Registratie: april 2005
  • Laatst online: 19:16
@SToRM666 Heb je al geprobeerd om het volume op 0 te zetten? Alle GND aansluitingen verbinden is juist goed om te voorkomen dat er spanningsverschillen ontstaat of dat stroom zijn eigen ongewenste weg weet te vinden.

Voeding is de meest waarchijnlijke bron van ruis. Ik zie dat deze module gevoed kan worden met een spanning tussen de 3,7 en 5,25V. Je zou eens drie penlites als voeding kunnen gebruiken (GND wel weer verbonden houden) en kijken of de ruis er dan ook is. De module alleen aangesloten op een Arduino zonder alle andere zaken erbij kan ook een goede test zijn (en dan een voor een de onderdelen van jouw klok weer toevoegen en luisteren wanneer de ruis terugkomt).

  • SToRM666
  • Registratie: juli 2005
  • Laatst online: 22-02 19:22
Volume op 0 helpt niet en zelfs de seriële verbinding afsluiten helpt niet ;)

In het begin heeft deze nog gewoon tussen de andere componenten aangesloten gezeten, dus met voeding via de Arduino, maar dat gaf teveel storing op de speaker. Het is niet dat het een keiharde ruis is, maar als het stil is kun je het van dichtbij wel horen en ik heb liever niet dat die module continu bezig is, maar enkel wanneer het nodig is.

Ik kan het als test inderdaad wel eens proberen met de penlites en zien wat dat doet.

SToRM666 wijzigde deze reactie 03-02-2019 21:03 (9%)

PSN id: NL_SToRM


  • tsjoender
  • Registratie: april 2005
  • Laatst online: 19:16
SToRM666 schreef op zondag 3 februari 2019 @ 21:02:
Volume op 0 helpt niet en zelfs de seriële verbinding afsluiten helpt niet ;)

In het begin heeft deze nog gewoon tussen de andere componenten aangesloten gezeten, dus met voeding via de Arduino, maar dat gaf teveel storing op de speaker. Het is niet dat het een keiharde ruis is, maar als het stil is kun je het van dichtbij wel horen en ik heb liever niet dat die module continu bezig is, maar enkel wanneer het nodig is.

Ik kan het als test inderdaad wel eens proberen met de penlites en zien wat dat doet.
Die NPN transistor die je eerder noemde was om de hele module uit te schakelen neem ik aan? Hoe had je die dan aangesloten?

  • SToRM666
  • Registratie: juli 2005
  • Laatst online: 22-02 19:22
Ik heb tussen de 5V en tussen de GND eens getest en in beide richtingen, maar dan kwam er nooit iets uit behalve wat gekke geluiden :P

Ik zit nu net even wat verder te prutsen en ik moet er ook bij zeggen dat die mp3 module onafhankelijk van de Arduino kan spelen, dus als de mp3 iets aan het afspelen is en ik reset de Arduino, dan speelt de mp3 vrolijk verder totdat die een commando krijgt om te stoppen. Ik heb de ruis nu nog iets stiller gekregen door wat commando's te sturen, maar het is nog altijd heel zacht te horen, maar dat is misschien niet echt iets wat kwaad kan?

Opzich wel handig dat de Arduino zijn stroom via usb krijgt, want als ik die eruit trek waardoor enkel de mp3 stroom krijgt, dan is de ruis harder dan wanneer ik de Arduino mee laat opstarten en even connecteer, het volume op "0" zet en weer een disconnect doe. Standaard staat het geluid van de mp3 module op "20".

SToRM666 wijzigde deze reactie 03-02-2019 22:10 (20%)

PSN id: NL_SToRM


  • jvdmast
  • Registratie: november 2002
  • Laatst online: 20-02 19:25
Heeft iemand hier wellicht ervaring met de combinatie van een SSD1306 (of soorgelijk) display en een i2c sóftware library? En dan met name níet de u8g2 mogelijkheid, want ik wil naast het display ook een bme280 en ccs811 over diezelfde i2c aansluiten.

Zie ook:
https://github.com/Testato/SoftwareWire/issues/19
https://github.com/adafruit/Adafruit_SSD1306/issues/133

  • kitao
  • Registratie: juli 2012
  • Laatst online: 21:12
SToRM666 schreef op maandag 28 januari 2019 @ 16:34:
Gisteren de eerste test en alles werkte nog :)

[Afbeelding]
Knap gemaakt hoor d:)b

Toevallig was ik gisteren ook op zoek naar een led-matrix, maar dan als virtuele component op Thinkercad maar die zit er helaas niet bij en valt niet te importeren. Is leuk platform maar nogal sober, de standaard kleur voor ieder draadje is groen en iedere andere kleur draad moet je steeds apart een keuze voor maken, zover ik heb kunnen vinden
Heb deze in elkaar getekend :


klik voor groter


Heb als voorbeeld deze website genomen :
http://www.learnerswings....ounter-demonstration.html

Mij gaat het dan meer om de bijbehorende Arduino code en de datasheet van de chip, meer voor de theorie dus. Hoewel het wel zo is dat je de datasheet sneller doorhebt als je ook werkelijk zo'n schakeling in actie ziet, althans wat het timing diagram betreft bijvoorbeeld.
Het samenstellen ervan via een programma zoals Thinkercad is tevens een vorm van ontspanning.
Hoewel .... voor diezelfde chip kwam ik ook deze tegen :
https://www.instructables.com/id/810-LED-Matrix-with-4017/
Maar die gebruikt dus 80 losse ledjes en dat is weinig ontspanning meer.

Dus vandaar dat ik nu op zoek ben naar een simulator die wel zulke componenten heeft, of ze kan importeren.
LTSpice en Eagle heb ik vluchtig bekeken maar heb er geen ervaring mee en lijkt nogal overkill, bovendien meen ik dat die nogal prijzig zijn ?
Dus als iemand een tip heeft voor een microprocessor simulator dat echt niet 1001 mogelijkheden hoeft te hebben maar net een paar stapjes meer in huis heeft als Thinkercad dan zou zo'n tip erg welkom zijn.
jvdmast schreef op donderdag 7 februari 2019 @ 14:40:
Heeft iemand hier wellicht ervaring met de combinatie van een SSD1306 (of soorgelijk) display en een i2c sóftware library? En dan met name níet de u8g2 mogelijkheid, want ik wil naast het display ook een bme280 en ccs811 over diezelfde i2c aansluiten.

Zie ook:
https://github.com/Testato/SoftwareWire/issues/19
https://github.com/adafruit/Adafruit_SSD1306/issues/133
iemand heeft een aantal libraries opgesomd maar ervaring daarmee en met dit display heb ik er niet mee.

https://github.com/Testat...iki/Arduino-I2C-libraries

Maar zou toch te doen moeten zijn, hier een nl-voorbeeld

https://arduino-lessen.nl...306-op-arduino-aansluiten


oh, sorry
dat is met een u8g2.
maar moet alles dan in één library staan die alle drie de onderdelen tegelijk behandelt ?
Ik zie in c++ bijvoorbeeld vaak genoeg staan #include<iostream> en een regel daarna #include<string> bijvoorbeeld. Er worden dus meerdere libraries in één programma aangeroepen. Maar nu komt dan zo'n I2C bus erbij die je tegelijk wil gebruiken voor die drie dingen dus weet het ook even niet meer in korte tijd hoe dit precies zat. Zag wel een combi bordje ervan met één library.

https://github.com/sparkfun/Qwiic_BME280_CCS811_Combo

maar dan zonder display.

Hier staan ze allemaal, 2.000 stuks .... http://www.mamjo.com/forum/Smileys/default/shocked.gif

https://www.arduinolibraries.info/libraries

Misschien kan je ook deze trefwoorden eens proberen : arduino putting multiple devices on i2c.
Dat levert bijv. deze video op

YouTube: #20 Tutorial: Multiple Devices on One Arduino I2C Bus


'meer weergeven' onder de video geeft extra info

https://github.com/SensorsIot/I2C_1-Video

ik hoop dat je hiermee vindt wat je zoekt en heb er ondertussen ook zelf iets meer van opgestoken. :)

kitao wijzigde deze reactie 11-02-2019 22:30 (36%)


  • jvdmast
  • Registratie: november 2002
  • Laatst online: 20-02 19:25
Thanks @kitao ik had die lijsten ook wel gevonden en al een heleboel combi's getest.
Meerdere devices op 1 i2c is by-design, daarvoor is i2c gemaakt. Ook dat heb ik al een poos werkend. Alleen nu heb ik een combi nodig van één i2c bus als master met een paar slaves (waaronder dit display) en één i2c bus die als slave functioneert naar een andere master.

Die ccs811-bme280 combo had ik ook gezien, maar die lost nog steeds het display probleem niet op, die werkt gewoon als 2 i2c slaves (dus precies als een losse ccs811 en een losse bme80) en heeft een bijkomend probleem dat de bme last heeft van de warmte die de ccs genereert. ;)

Ik ben nu bezig om het om te draaien. De i2c devices aan de normale i2c bus (werkt wel namelijk) en een software-i2c slave. Die zijn schaarser maar omdat die minder hoeft te doen hoop ik dat ik daarmee verder kom.

  • kitao
  • Registratie: juli 2012
  • Laatst online: 21:12
jvdmast schreef op dinsdag 12 februari 2019 @ 11:59:
Thanks @kitao ik had die lijsten ook wel gevonden en al een heleboel combi's getest.
Meerdere devices op 1 i2c is by-design, daarvoor is i2c gemaakt. Ook dat heb ik al een poos werkend. Alleen nu heb ik een combi nodig van één i2c bus als master met een paar slaves (waaronder dit display) en één i2c bus die als slave functioneert naar een andere master.

Die ccs811-bme280 combo had ik ook gezien, maar die lost nog steeds het display probleem niet op, die werkt gewoon als 2 i2c slaves (dus precies als een losse ccs811 en een losse bme80) en heeft een bijkomend probleem dat de bme last heeft van de warmte die de ccs genereert. ;)

Ik ben nu bezig om het om te draaien. De i2c devices aan de normale i2c bus (werkt wel namelijk) en een software-i2c slave. Die zijn schaarser maar omdat die minder hoeft te doen hoop ik dat ik daarmee verder kom.
Ja ik dacht zelf al dat je geen advies in de vorm van een google cursus nodig had, maar ja, meer als dat kon ik even niet geven want ben er vijf jaar tussenuit geweest met micro's en alles netjes opgeborgen. Was trouwens toch al niet super vergevorderd maar ook niet echt beginner meer. Het ligt nog steeds in de kast maar wou het virtueel weer oppakken en dacht ik kijk even met je mee en noteerde gewoon wat ik tegenkwam in de hoop dat jij toch iets ziet waardoor je verder kan. :)

Over zoek-cursus gesproken, na mijn vorige verzoek om een tip voor een arduino-simulator liep ik er ineens wel tegen aan terwijl ik toch al eerder had gezocht.

Zelf componenten importeren zit er nog steeds niet bij maar het arsenaal is veel groter als bij Thinkercad, zit ook debug in en een vrij groot assortiment programmeerbare IC's, etc. In/uit-zoomen zonder wieltjes muis gaat met twee vingers op touchpad, dat was even zoeken en ben nog maar éen kleur draad tegengekomen, namelijk zwart en ik zou voor diegeen die het ook wil testen aanraden eerst deze video kijken maar voor de rest is het een kwestie van oefenen en proberen.

YouTube: SimulIDE_0.1.5 Basic use.

Wil je arduino sketches nabootsen dan moet die volgens de instructies wel op je pc staan dus heb die zonet er weer opgezet. Die heb ik nog niet getest, want ben simpel begonnen met deze :


klik voor groter, je komt dan in imgur, klik nogmaals op plaatje


sorry voor het grote plaatje maar dat thumbnailen via imgur gaat ene keer wel en dan weer niet, zit tijdsvertraging in volgens mij

Kan hier voorlopig wel mee uit de voeten en het enige wat ze ervoor vragen is een vrijwillige donatie.

http://simulide.blogspot.com/

En er zit een vrij grote 'community' achter, veel video's erover, hele serie lessen erover etc.
.
.

kitao wijzigde deze reactie 12-02-2019 19:23 (6%)


  • PE4000
  • Registratie: november 2012
  • Laatst online: 18:10
Een poosje geleden kwam ik dit tegen: Temperatuur Monitor / Alarm en dit leek mij best wel interessant.
Eindelijk zondag mee aan de gang gegaan, echter volgens mij is mijn Nokia5110 display niet goed meer.
Laatst ook al gekloot gehad met dat display en nu exact hetzelfde.
De tekst is net leesbaar, maar naar verloop van tijd niet meer. Dus eerdaags een nieuwe halen.

The Setup Screen
http://www.vwlowen.co.uk/arduino/temperature/setup-menu.jpg
The Main Screen
http://www.vwlowen.co.uk/arduino/temperature/main-screen.jpg

  • kitao
  • Registratie: juli 2012
  • Laatst online: 21:12
PE4000 schreef op dinsdag 12 februari 2019 @ 21:42:
Een poosje geleden kwam ik dit tegen: Temperatuur Monitor / Alarm en dit leek mij best wel interessant.
Eindelijk zondag mee aan de gang gegaan, echter volgens mij is mijn Nokia5110 display niet goed meer.
Laatst ook al gekloot gehad met dat display en nu exact hetzelfde.
De tekst is net leesbaar, maar naar verloop van tijd niet meer. Dus eerdaags een nieuwe halen.

The Setup Screen
[Afbeelding]
The Main Screen
[Afbeelding]
[YouTube: temperature]
Er hangen best veel componenten aan de Atm328, meen me te herinneren dat een aparte hulpvoeding (5V batterij op het display) dan soms wordt toegepast maar weet dat niet zeker meer. Maar kan ook inderdaad zo zijn dat die dingen snel verslijten.

Ben zelf inmiddels een stap verder met de virtuele uno, oftewel nep-uno voor sommigen B)
Voor geinteresseerden hier een paar stappen om dat aan de praat te krijgen, hoewel ik ieder in staat acht dit zelf uit te vogelen maar kost dan meer zoekwerk.
Arduino ide software is nodig, maar niet het bordje en SimulIDE, links in vorige post.
Het meeste is te zien in de twee video's hieronder dus ik houd het kort.
Laad een nieuw sketch in het arduino scherm en klik op file - preferences. Vink verbose output compilation aan. Klik daarna op V verify , je krijgt dan onderin de build-gegevens. Zonder verbose output te vinken krijg je die niet, vandaar. Zoek in de build gegevens naar een hex-file, select en ctrl+C om te kopieren.
Dat ziet er zo uit :

C:\\Users\\kitao\\AppData\\Local\\Temp\\arduino_build_844847/sketch_feb13b.ino.hex

en moet dit worden :

C:\Users\kitao\AppData\Local\Temp\arduino_build_844847\sketch_feb13b.ino.hex

Plak die laatste in een tijdelijk notepadje, is handig als je die nog nodig hebt. Hoewel, het blijkt namelijk dat zolang hetzelfde uno-programma open blijft dit pad niet meer verandert en bovendien heb je die volgens de video maar 1 keer nodig want bij wijziging uno-programma hoef je in Simul enkel op reload te klikken.
Nog iets, bij mij als ik op V verify druk vraagt die ieder keer om saven, is ook niet nodig.
Vervolgens in Simul, rechtsklik op de uno en klik Load firmware en plak de hex erin en klik Open.

Op die manier heb ik een matrix-led in beweging kunnen krijgen, hieronder de code en een plaatje ervan van een toch best snel lopend patroontje.
De code heb ik aangepast, het origineel is in de link hieronder te vinden, blijkt namelijk dat het origineel voor deze virtuele uno iets te snel gaat, houdt het niet bij. Vind de originele code ook lastig helemaal goed te doorzien, zou meer tijd vergen als ik er nu voor over heb om exact hetzelfde te krijgen als het origineel. Vermoed trouwens ook dat dit niet mogelijk is met zulke lage snelheid, maar kan me vergissen.
Wellicht een uitdaging voor de lezer om hier mijn vermoeden als kolder te weerleggen >:)


klik voor groter


als de thumbnail het doet haal ik deze weg

YouTube: SimulIDE Arduino Blink Basic

YouTube: SimulIDE 0.0.2 Simulator: Arduino barGraph example

origineel project :
http://osoyoo.com/2017/07/15/arduino-lesson-8x8-led-matrix/


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
// 2-dimensional array of row pin numbers:
int R[] = {2,3,4,5,A2,A3,A4,A5};  
// 2-dimensional array of column pin numbers:
int C[] = {13,12,11,10,9,8,7,6};    
  
unsigned char matrix[8][8] =     //the "matrix"   
{  
  0,0,0,0,0,0,0,1,  
  0,1,1,1,1,1,1,1,  
  0,0,1,1,1,1,1,1,  
  0,0,0,1,1,1,1,1, 
  0,0,0,0,1,1,1,1,  
  0,0,0,0,0,1,1,1,  
  0,0,0,0,0,0,1,1, 
  1,1,1,1,1,1,1,0,
    
};  
  
void setup()  
{  
   // iterate over the pins:
  for(int i = 0;i<8;i++)  
  // initialize the output pins:
  {  
    pinMode(R[i],OUTPUT);  
    pinMode(C[i],OUTPUT);  
  }  
}  
  
void loop()  
{  
  for(int i = 0 ; i < 1000 ; i++)        //Loop display 1000  
  {  
    Display(matrix);                   //Display the "matrix"  
  }  
}  
  
void Display(unsigned char dat[8][8])    
{  
  for(int c = 0; c<8;c++)  
  {  
    digitalWrite(C[c],LOW);//use the column 
    //loop
    for(int r = 0;r<8;r++)  
    {  
      digitalWrite(R[r],dat[r][c]);  
    }  
    delay(100);  // Stel hier de snelheid in van de matrix
    Clear();  //Remove empty display light
    
  }  
}  
  
void Clear()                        
{  
  for(int i = 0;i<8;i++)  
  {  
    digitalWrite(R[i],LOW);  
    digitalWrite(C[i],HIGH);  
  }  
}



Al met al niet ontevreden met deze in principe gratis software van SimulIDE :)

.

kitao wijzigde deze reactie 13-02-2019 21:17 (1%)
Reden: Gestuntel met duimnagel

Pagina: 1 ... 90 91 92 Laatste


Apple iPhone XS Red Dead Redemption 2 LG W7 Google Pixel 3 XL OnePlus 6T (6GB ram) FIFA 19 Samsung Galaxy S10 Google Pixel 3

Tweakers vormt samen met Tweakers Elect, Hardware.Info, Autotrack, Nationale Vacaturebank, Intermediair en Independer de Persgroep Online Services B.V.
Alle rechten voorbehouden © 1998 - 2019 Hosting door True