Acties:
  • 0 Henk 'm!

  • Bravo51
  • Registratie: April 2008
  • Laatst online: 16:49
Als ik mij niet vergis geven ze aan dat alleen bij de UNO een condensator geplaatst moet worden. Bij de mega zou er een 120 ohm weerstand tussen de reset en ground geplaatst moeten worden.

http://arduino.cc/en/Tutorial/ArduinoISP

Volgens de site van Arduino hoeft er zelfs geen weerstand tussen de reset en ground bij een mega.

Acties:
  • 0 Henk 'm!

  • WVL_KsZeN
  • Registratie: Oktober 2002
  • Laatst online: 19:47
Bravo51 schreef op vrijdag 09 november 2012 @ 21:21:
Als ik mij niet vergis geven ze aan dat alleen bij de UNO een condensator geplaatst moet worden. Bij de mega zou er een 120 ohm weerstand tussen de reset en ground geplaatst moeten worden.

http://arduino.cc/en/Tutorial/ArduinoISP

Volgens de site van Arduino hoeft er zelfs geen weerstand tussen de reset en ground bij een mega.
Met een weerstandje tussen RST en GND draait de hele ISP code niet (hearbeat led brandt niet meer), dus blijkbaar wordt er dan continu gereset...

/me heeft eindelijk ook een icoontje.. woef.. boeien..


Acties:
  • 0 Henk 'm!

  • Rusky
  • Registratie: December 2000
  • Laatst online: 29-08 12:59
Heb nu me kiku van de action helemaal werkend! met een zender van iprototype (waar mooie voorbeelden te krijgen zijn, incl libraries ed) en een setje van de action kan ik nu via elk device met inet toegang me lampen aan en uit zetten. Ging allemaal wel heel erg makkelijk. (ben net een paar avonden bezig met de arduino).

alleen een code vraagje.
Ik stuur vanaf php een "a" om lamp 1 aan te doen "b" om uit te doen enz.
En dan kijkt arduino naar de deze letters om wat te doen.

webpagina:
PHP:
1
<button type="submit" name="lamp" value="a">lamp 1 aan</button>


Arduino:
code:
1
2
3
case 'a':
actionSwitch.sendSignal(1,'B',true);
break;


maar is het niet makkelijker om in php te zetten: 1, 'B' en dan deze sturen naar Arduino?
zodat Arduino maar 1 regel krijgt om meerdere apparaten te sturen? bv actioSwitch.sendsignaal(phpsignaal, true);
Is dit mogelijk?
Want ik krijg geen eens meerdere bytes van php in de Arduino.
Wat ik geprobeerd heb:

code:
1
2
3
if(Serial.available()) {
    while (Serial.available()>0){
    serIn = Serial.read();

en variant:
code:
1
2
3
4
5
6
7
String content = "";
  char character;

  while(Serial.available()) {
      character = Serial.read();
      content.concat(character);
  }

maar kreeg niet wat ik wilde

mijn pc


Acties:
  • 0 Henk 'm!

  • WVL_KsZeN
  • Registratie: Oktober 2002
  • Laatst online: 19:47
Weer een stapje verder, maar snap niet waarom :) Heb alle bedrading nagekeken, was in orde. Alle draadjes los en weer vast. Geen verschil. De boel opgebouwd op een ander breadboard, en opeens dit : Yikes!

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
D:\arduino-1.0.1\hardware/tools/avr/bin/avrdude -CD:\arduino-1.0.1\hardware/tools/avr/etc/avrdude.conf -v -v -v -v -patmega328p -cstk500v1 -P\\.\COM5 -b19200 -e -Ulock:w:0x3F:m -Uefuse:w:0x05:m -Uhfuse:w:0xDA:m -Ulfuse:w:0xFF:m 

avrdude: Version 5.11, compiled on Sep  2 2011 at 19:38:36
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2009 Joerg Wunsch

         System wide configuration file is "D:\arduino-1.0.1\hardware/tools/avr/etc/avrdude.conf"

         Using Port                    : \\.\COM5
         Using Programmer              : stk500v1
         Overriding Baud Rate          : 19200
avrdude: Send: 0 [30]   [20] 
avrdude: Send: 0 [30]   [20] 
avrdude: Send: 0 [30]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [10] 
         AVR Part                      : ATMEGA328P
         Chip Erase delay              : 9000 us
         PAGEL                         : PD7
         BS2                           : PC2
         RESET disposition             : dedicated
         RETRY pulse                   : SCK
         serial program mode           : yes
         parallel program mode         : yes
         Timeout                       : 200
         StabDelay                     : 100
         CmdexeDelay                   : 25
         SyncLoops                     : 32
         ByteDelay                     : 0
         PollIndex                     : 3
         PollValue                     : 0x53
         Memory Detail                 :

                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           eeprom        65    20     4    0 no       1024    4      0  3600  3600 0xff 0xff
                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           flash         65     6   128    0 yes     32768  128    256  4500  4500 0xff 0xff
                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           lfuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           hfuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           efuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           lock           0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           calibration    0     0     0    0 no          1    0      0     0     0 0x00 0x00
                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           signature      0     0     0    0 no          3    0      0     0     0 0x00 0x00

         Programmer Type : STK500
         Description     : Atmel STK500 Version 1.x firmware
avrdude: Send: A [41] . [80]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [02] 
avrdude: Recv: . [10] 
avrdude: Send: A [41] . [81]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [01] 
avrdude: Recv: . [10] 
avrdude: Send: A [41] . [82]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [12] 
avrdude: Recv: . [10] 
avrdude: Send: A [41] . [98]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [00] 
avrdude: Recv: . [10] 
         Hardware Version: 2
         Firmware Version: 1.18
         Topcard         : Unknown
avrdude: Send: A [41] . [84]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [00] 
avrdude: Recv: . [10] 
avrdude: Send: A [41] . [85]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [00] 
avrdude: Recv: . [10] 
avrdude: Send: A [41] . [86]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [00] 
avrdude: Recv: . [10] 
avrdude: Send: A [41] . [87]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [00] 
avrdude: Recv: . [10] 
avrdude: Send: A [41] . [89]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [00] 
avrdude: Recv: . [10] 
         Vtarget         : 0.0 V
         Varef           : 0.0 V
         Oscillator      : Off
         SCK period      : 0.1 us

avrdude: Send: A [41] . [81]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [01] 
avrdude: Recv: . [10] 
avrdude: Send: A [41] . [82]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [12] 
avrdude: Recv: . [10] 
avrdude: Send: B [42] . [86] . [00] . [00] . [01] . [01] . [01] . [01] . [03] . [ff] . [ff] . [ff] . [ff] . [00] . [80] . [04] . [00] . [00] . [00] . [80] . [00]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [10] 
avrdude: Send: E [45] . [05] . [04] . [d7] . [c2] . [00]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [10] 
avrdude: Send: P [50]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [10] 
avrdude: AVR device initialized and ready to accept instructions

Reading | avrdude: Send: V [56] 0 [30] . [00] . [00] . [00]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [00] 
avrdude: Recv: . [10] 
avrdude: Send: V [56] 0 [30] . [00] . [01] . [00]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [00] 
avrdude: Recv: . [10] 
################avrdude: Send: V [56] 0 [30] . [00] . [02] . [00]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [00] 
avrdude: Recv: . [10] 
################################## | 100% 0.06s

avrdude: Device signature = 0x000000
avrdude: Yikes!  Invalid device signature.
         Double check connections and try again, or use -F to override
         this check.

avrdude: Send: Q [51]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [10] 

avrdude done.  Thank you.

/me heeft eindelijk ook een icoontje.. woef.. boeien..


Acties:
  • 0 Henk 'm!

  • Mattie112
  • Registratie: Januari 2007
  • Laatst online: 16:32
Als je zeker weet dat het klopt kan je de "-F" optie gebruiken, maar ik heb er verder totaal geen ervaring mee dus geen idee wat er allemaal fout kan gaan :p

3780wP (18x 210wP EC Solar) | 2x Marstek Venus E (5.12kWh)


Acties:
  • 0 Henk 'm!

  • WVL_KsZeN
  • Registratie: Oktober 2002
  • Laatst online: 19:47
Nja.. denk dat het ding gewoon gefrituurd is. Ik leg hem in de kast aan ga met een andere aan de slag, een stuk minder frustrerend en mijn uren zijn me te kostbaar om deze aan de praat te krijgen :)

/me heeft eindelijk ook een icoontje.. woef.. boeien..


Acties:
  • 0 Henk 'm!

  • kitao
  • Registratie: Juli 2012
  • Laatst online: 05-09 16:01
Heeft dit er mss ook iets mee te maken denk je ?
Het is een Arduino Nano (chinese kloon), maar het lukt niet een programma te flashen.

Acties:
  • 0 Henk 'm!

  • Sissors
  • Registratie: Mei 2005
  • Niet online
Bij jouw ontvangt hij nu een byte, dan kijkt hij of er nog meer zijn, maar die zijn er niet want die worden op dat moment nog verstuurd. Wat je beter kan doen is alles opslaan tot je een terminating character krijgt (bijvoorbeeld \n), en dan kijke nwat je hebt.

Acties:
  • 0 Henk 'm!

  • Fuzzillogic
  • Registratie: November 2001
  • Laatst online: 01-07 22:34
Rusky schreef op vrijdag 09 november 2012 @ 22:11:
Heb nu me m'n kiku van de action helemaal werkend! met een zender van iprototype (waar mooie voorbeelden te krijgen zijn, incl libraries ed) en een setje van de action kan ik nu via elk device met inet toegang me lampen aan en uit zetten. Ging allemaal wel heel erg makkelijk. (ben net een paar avonden bezig met de arduino).
Goed om te horen. Alleen staat er bij iPrototype wel een verouderde versie van de library, zie m'n signature voor de link naar de actuele versie.
alleen een code vraagje.
ik krijg geen eens meerdere bytes van php in de Arduino.
ReadBytesUntil is wellicht je vriend. Er zijn meerdere libraries voor communicatie tussen arduino en pc. Zelf zou ik eerder directe integers uitwisselen (zie stream.parseInt()). Onder water werkt de remoteswitch library ook direct met die integers. Dat is flexibeler en stelt je in makkelijker in staat om nieuwe apparaten te "leren" op de server, zonder dat je software hoeft aan te passen. Dit type signalen bestaat immers maar uit twee componenten: een code en een pulslengte. Dat is voldoende voor zowel het versturen als ontvangen. De dev-branche van de remoteswitch library bevatten voorbeelden die laten zien hoe je aan die getallen komt en hoe je ze kunt versturen.

offtopic:
Over mijn nogal korte opmerking m.b.t. ISP van de ene naar de andere Arduino: dat niet iedereen de ISP-mogelijkheid kent snap ik, daarom geef ik ook die pointer. Maar dat zou m.i. toch voldoende moeten zijn om zelf wel verder te zoeken naar de details. Dat zou ik zelf ook moeten doen, want ik weet die details ook niet meer. Enige zelfredzaamheid mag ik toch wel verwachten.

Acties:
  • 0 Henk 'm!

  • Rusky
  • Registratie: December 2000
  • Laatst online: 29-08 12:59
Fuzzillogic schreef op zaterdag 10 november 2012 @ 18:01:
[...]

Goed om te horen. Alleen staat er bij iPrototype wel een verouderde versie van de library, zie m'n signature voor de link naar de actuele versie.


[...]

ReadBytesUntil is wellicht je vriend. Er zijn meerdere libraries voor communicatie tussen arduino en pc. Zelf zou ik eerder directe integers uitwisselen (zie stream.parseInt()). Onder water werkt de remoteswitch library ook direct met die integers. Dat is flexibeler en stelt je in makkelijker in staat om nieuwe apparaten te "leren" op de server, zonder dat je software hoeft aan te passen. Dit type signalen bestaat immers maar uit twee componenten: een code en een pulslengte. Dat is voldoende voor zowel het versturen als ontvangen. De dev-branche van de remoteswitch library bevatten voorbeelden die laten zien hoe je aan die getallen komt en hoe je ze kunt versturen.
Die oude versie was ik al achter gekomen. maar heb alleen wprogam.h met arduino.h verwisselt, en toen deed hij het perfect.
Maar dat stream.prselnt()) en zo dat snap ik niet. Ben denk daarom nog te kort ermee bezig. Maar zal me een inlezen in die materie.

mijn pc


Acties:
  • 0 Henk 'm!

  • mad_max234
  • Registratie: September 2003
  • Laatst online: 07-02 11:09
Yikes! en signatuur 0x000000 betekend, bedrading niet goed, fusebits verkeerd(denk aan clock, reset bit, etc), of chip is dood, programmer krijgt in ieder geval geen enkele respons van de chip.

[ Voor 19% gewijzigd door mad_max234 op 11-11-2012 01:38 ]

-Andere hobby- -


Acties:
  • 0 Henk 'm!

  • mcDavid
  • Registratie: April 2008
  • Laatst online: 09-09 17:48
Heb eindelijk mijn binaire klok helemaal af:

[ Voor 21% gewijzigd door mcDavid op 11-11-2012 18:29 ]


Acties:
  • 0 Henk 'm!

  • kitao
  • Registratie: Juli 2012
  • Laatst online: 05-09 16:01
Mooie vormgeving McDavid,
heb het filmpje 3x bekeken maar ben er nog niet helemaal uit.
onderste regel seconden, middelste 60 minuten, iedere puntje 10 minuten, bovenste per 6 uren ?
Maar welke tijdspanne is er nu precies doorlopen in die clip ?
Sorry, ben niet altijd even snel van begrip

Even iets anders, hoe zet je kleuren in een code :
code:
1
2
3
dit is een code
[green] en deze regel wil ik in het groen[/green]
zoals je ziet werkt dat niet zo best


offtopic:
@fuzzy, sorry voor mijn vorige reactie, dit gaf geen pas

Acties:
  • 0 Henk 'm!

  • almightyarjen
  • Registratie: Maart 2002
  • Laatst online: 21:42

almightyarjen

When does the hurting stop?

Ik heb hier een stukje code:

code:
1
2
3
4
5
6
7
    if(way == backward)    
    {
      leftPos = leftTachPos-rotation;
      digitalWrite(logicleft1, LOW);
      digitalWrite(logicleft2, HIGH);    
      while(leftTachPos > leftPos);
    }


Dat while statement op het einde: geeft die aan dat alle statements tussen de brackets herhaald wordt zolang de conditie true is? Ik heb nog nooit eerder gezien dat While op deze manier wordt gebruikt. Het lijkt erop dat het een do-while statement is, zonder de do. Klopt dit??

Patreon | Main Youtube | Work In Progress Youtube


Acties:
  • 0 Henk 'm!

  • mcDavid
  • Registratie: April 2008
  • Laatst online: 09-09 17:48
Is het niet gewoon een "doe niets zolang leftTachPos > leftPos"?

[ Voor 4% gewijzigd door mcDavid op 11-11-2012 19:38 ]


Acties:
  • 0 Henk 'm!

  • almightyarjen
  • Registratie: Maart 2002
  • Laatst online: 21:42

almightyarjen

When does the hurting stop?

mcDavid schreef op zondag 11 november 2012 @ 19:38:
Is het niet gewoon een "doe niets zolang leftTachPos > leftPos"?
Dan had ik na het while statement twee brackets met niets ertussen verwacht...

Patreon | Main Youtube | Work In Progress Youtube


Acties:
  • 0 Henk 'm!

  • Sissors
  • Registratie: Mei 2005
  • Niet online
Dat kan, maar is niet noodzakelijk. Nu doet hij inderdaad gewoon niets totdat niet meer aan het while statement wordt voldaan.

Acties:
  • 0 Henk 'm!

  • kitao
  • Registratie: Juli 2012
  • Laatst online: 05-09 16:01
Hallo, even in t kort, ik heb een uno en een basicstamp
Voor de uno heb ik onlangs dit geprobeerd met een parallele lcd en dat ging prima :
Afbeeldingslocatie: http://s13.postimage.org/ucz0x18wz/img61.jpg
klik
Nu wil ik diezelfde lcd op de stamp aansluiten.
Ik heb hiervoor als voorbeeld deze uitleg, ook een HD44780.
Echter, het aansluitschema is heel anders, nu met totaal 5 extra weerstanden :
Afbeeldingslocatie: http://s10.postimage.org/x3nsj14fp/img60.jpg
klik
Uiteraard ga ik geen risico nemen en sluit deze week de sparkfun/uno-lcd ook met die weerstanden aan op de stamp, maar ik vroeg me zo af, waarom is dit geheel verschillend van elkaar ? :?

[ Voor 3% gewijzigd door kitao op 11-11-2012 22:24 . Reden: verkeerde link ]


Acties:
  • 0 Henk 'm!

  • Bloemstukje
  • Registratie: December 2008
  • Laatst online: 09:45
Zo te zien zijn dat gewoon pull-down weerstanden. Om ervoor te zorgen dat 0 ook echt 0 nul is. Althans; voor zover ik weet :). Het kan zijn dat je zonder pull-down weerstanden last krijgt van zwevende ingangen op je LCD.

gewoon nee.


Acties:
  • 0 Henk 'm!

  • kitao
  • Registratie: Juli 2012
  • Laatst online: 05-09 16:01
Ok, tnx.
Klinkt logisch maar dan blijft toch de vraag waarom dat bij de Uno dan niet nodig is ?

Acties:
  • 0 Henk 'm!

  • mcDavid
  • Registratie: April 2008
  • Laatst online: 09-09 17:48
Blijkbaar kan die stamp niet sinken dan?

Acties:
  • 0 Henk 'm!

  • kitao
  • Registratie: Juli 2012
  • Laatst online: 05-09 16:01
Het is inderdaad geen u-boot ?

sorry, wederom traag van begrip |:(

Acties:
  • 0 Henk 'm!

  • Sissors
  • Registratie: Mei 2005
  • Niet online
Dat is er enkel voor dat als de microcontroller niet is aangesloten nog (of zijn uitgang niet geinitialiseerd zijn) die lijnen een specifieke staat hebben (laag).

Acties:
  • 0 Henk 'm!

  • kitao
  • Registratie: Juli 2012
  • Laatst online: 05-09 16:01
ok, ik ga het proberen, deze seriele ben ik klaar mee. :)

Acties:
  • 0 Henk 'm!

  • McKaamos
  • Registratie: Maart 2002
  • Niet online

McKaamos

Master of the Edit-button

Zo, ik ben er ook weer even :P

Een tijdje terug raadde iemand mij een bepaald model Mosfet aan, die logic level schakelt. Kan em direct aan m'n Arduino hangen (gate aan een digital pin van de arduino) en dan zou het werken.

Nou ben ik geen electronica genie, dus heb een handje vol van die dingen gehaald, maar nu blijkt het niet te werken. Ze blijven permanent open staan, of ik de pin nou high gooi of low.
Dit schijnt te komen doordat het N channel mosfets zijn, en ik zou P channel moeten hebben.

Even om samen te vatten wat ik precies probeer te doen:
Ik heb een Sigma LED matrix display.
De 7 horizontale lijnen worden gevoed met 12volt (om beurten) en de kolommen worden dmv shift registers en darlington arrays verbonden met de massa.

Elke rij is 95 stippen lang.
Even er vanuit gaande dat elke stip 20ma trekt, en ik de hele rij in één keer wil kunnen laten oplichten, moet ik dus 95x0.02A=1,9amp kunnen schakelen op 12volt.

Welke mosfet heb ik hier nou voor nodig? Of kan ik iets uithalen met de huidige om te zorgen dat het werkt?
Ze hangen nu met source aan 12v, drain naar de rij en gate aan de arduino.

Iemand een Tina2 in de aanbieding?


Acties:
  • 0 Henk 'm!

  • almightyarjen
  • Registratie: Maart 2002
  • Laatst online: 21:42

almightyarjen

When does the hurting stop?

McKaamos schreef op maandag 12 november 2012 @ 00:37:
Zo, ik ben er ook weer even :P

Een tijdje terug raadde iemand mij een bepaald model Mosfet aan, die logic level schakelt. Kan em direct aan m'n Arduino hangen (gate aan een digital pin van de arduino) en dan zou het werken.

Nou ben ik geen electronica genie, dus heb een handje vol van die dingen gehaald, maar nu blijkt het niet te werken. Ze blijven permanent open staan, of ik de pin nou high gooi of low.
Dit schijnt te komen doordat het N channel mosfets zijn, en ik zou P channel moeten hebben.

Even om samen te vatten wat ik precies probeer te doen:
Ik heb een Sigma LED matrix display.
De 7 horizontale lijnen worden gevoed met 12volt (om beurten) en de kolommen worden dmv shift registers en darlington arrays verbonden met de massa.

Elke rij is 95 stippen lang.
Even er vanuit gaande dat elke stip 20ma trekt, en ik de hele rij in één keer wil kunnen laten oplichten, moet ik dus 95x0.02A=1,9amp kunnen schakelen op 12volt.

Welke mosfet heb ik hier nou voor nodig? Of kan ik iets uithalen met de huidige om te zorgen dat het werkt?
Ze hangen nu met source aan 12v, drain naar de rij en gate aan de arduino.
Volgens mij heb je de FET verkeerd aangesloten. Source moet naar GND, Drain gaat naar de rij (andere kant van de rij naar 12V) en de Gate gaat naar de arduino zoals je nu ook al hebt...

En wat betreft welk type: Heel veel types moeten gewoon werken. Ik gebruik zelf altijd de IRFZ48, kan tot 50A oid schakelen, altijd genoeg :D

Patreon | Main Youtube | Work In Progress Youtube


Acties:
  • 0 Henk 'm!

  • McKaamos
  • Registratie: Maart 2002
  • Niet online

McKaamos

Master of the Edit-button

En dat is wat dus niet moet.
Er moet pas 12volt op de rij komen te staan wanneer die rij aan de beurt is.

Het is gewoon een matrix van LEDjes. horizontaal de 12v, verticaal de massa.
12volt moet pas op de rij gezet worden wanneer hij aan de beurt is.
De massa wordt open gezet dmv shift registers die een transistor open trekken aan de bodem van de kolom, om zo het pad naar massa compleet te maken.

Edit:
Het schema van de LED matrix is zoals dit:
Afbeeldingslocatie: http://3.bp.blogspot.com/_YDPYkReterA/SezZ7kauLzI/AAAAAAAAABc/pzV-nUZAxXY/s400/LEDmatrix.png
Rx wordt om beurten voorzien van 12v, Cx wordt verbonden naar massa als dat betreffende Ledje in de rij aan moet staan.

Als ik permanent 12volt op Rx ga zetten, en dan aan het andere eind pas de Mosfet plaats, gaat of de hele rij aan, of de hele kolom licht op wanneer ik Cx naar massa schakel maak ik kortsluiting als de mosfet open gaat.

[ Voor 39% gewijzigd door McKaamos op 12-11-2012 01:04 ]

Iemand een Tina2 in de aanbieding?


Acties:
  • 0 Henk 'm!

  • Mattie112
  • Registratie: Januari 2007
  • Laatst online: 16:32
almightyarjen schreef op zondag 11 november 2012 @ 19:30:
Ik heb hier een stukje code:

code:
1
2
3
4
5
6
7
    if(way == backward)    
    {
      leftPos = leftTachPos-rotation;
      digitalWrite(logicleft1, LOW);
      digitalWrite(logicleft2, HIGH);    
      while(leftTachPos > leftPos);
    }


Dat while statement op het einde: geeft die aan dat alle statements tussen de brackets herhaald wordt zolang de conditie true is? Ik heb nog nooit eerder gezien dat While op deze manier wordt gebruikt. Het lijkt erop dat het een do-while statement is, zonder de do. Klopt dit??
Nee, voor zover ik weet werkt dat zo niet. Je kan dit gebruiken (pseudo code dus de syntax zal niet kloppen)

C++:
1
2
3
4
5
6
7
while (left > leftpos)
{
if (iets == iets)
{
//doe iets
}
}


of

C++:
1
2
3
4
5
6
7
do
{
if (iets == iets)
{
//doe iets
}
}while (left < leftpos);

3780wP (18x 210wP EC Solar) | 2x Marstek Venus E (5.12kWh)


Acties:
  • 0 Henk 'm!

  • mcDavid
  • Registratie: April 2008
  • Laatst online: 09-09 17:48
McKaamos, je hebt drain en source verwisseld.
YouTube: Transistor / MOSFET tutorial kijk dit filmpje even, maakte voor mij een hoop duidelijk.

Acties:
  • 0 Henk 'm!

  • McKaamos
  • Registratie: Maart 2002
  • Niet online

McKaamos

Master of the Edit-button

mcDavid schreef op maandag 12 november 2012 @ 10:02:
McKaamos, je hebt drain en source verwisseld.
YouTube: Transistor / MOSFET tutorial kijk dit filmpje even, maakte voor mij een hoop duidelijk.
Ok! Dat is verhelderend! Hartelijk dank!
Maar kan ik de load bij een N Channel ook aan de source hangen en pas daar na naar ground gaan?
Zodat ik dus 12v op de drain zet en ik zo dus om beurten 12volt op de rijen kan zetten?

Iemand een Tina2 in de aanbieding?


Acties:
  • 0 Henk 'm!

  • Sissors
  • Registratie: Mei 2005
  • Niet online
Je kan niet zomaar met de 5V die je uit je Arduino krijgt met een transistor de 12V aan en uit schakelen Je hebt of meerdere transistoren nodig, of andere componenten.

Acties:
  • 0 Henk 'm!

  • McKaamos
  • Registratie: Maart 2002
  • Niet online

McKaamos

Master of the Edit-button

Er werd juist gezegd dat deze dat wel kan, gezien het een Logic Level model is.

Wat heb ik nou nodig dan?

Iemand een Tina2 in de aanbieding?


Acties:
  • 0 Henk 'm!

  • mcDavid
  • Registratie: April 2008
  • Laatst online: 09-09 17:48
McKaamos schreef op maandag 12 november 2012 @ 10:14:
[...]

Ok! Dat is verhelderend! Hartelijk dank!
Maar kan ik de load bij een N Channel ook aan de source hangen en pas daar na naar ground gaan?
Zodat ik dus 12v op de drain zet en ik zo dus om beurten 12volt op de rijen kan zetten?
Of je de mosfet voor of achter de load zet, maakt weinig uit. Als hij maar goed om gemonteerd is.
furby-killer schreef op maandag 12 november 2012 @ 10:36:
Je kan niet zomaar met de 5V die je uit je Arduino krijgt met een transistor de 12V aan en uit schakelen Je hebt of meerdere transistoren nodig, of andere componenten.
Met een mosfet kan dat (voor zover ik begrepen heb) juist wel.

Acties:
  • 0 Henk 'm!

  • Mattie112
  • Registratie: Januari 2007
  • Laatst online: 16:32
kitao schreef op zondag 11 november 2012 @ 19:07:
Mooie vormgeving McDavid,
heb het filmpje 3x bekeken maar ben er nog niet helemaal uit.
onderste regel seconden, middelste 60 minuten, iedere puntje 10 minuten, bovenste per 6 uren ?
Maar welke tijdspanne is er nu precies doorlopen in die clip ?
Sorry, ben niet altijd even snel van begrip

Even iets anders, hoe zet je kleuren in een code :
code:
1
2
3
dit is een code
[green] en deze regel wil ik in het groen[/green]
zoals je ziet werkt dat niet zo best


offtopic:
@fuzzy, sorry voor mijn vorige reactie, dit gaf geen pas
Voor syntax highlighting gebruik:
[code=cpp ]

:)

3780wP (18x 210wP EC Solar) | 2x Marstek Venus E (5.12kWh)


Acties:
  • 0 Henk 'm!

Verwijderd

kitao schreef op vrijdag 09 november 2012 @ 11:49:
[...]


Is mss wel zo, maar waarom dan toch reageren ?
Zo van, mij is het heel simpel wel gelukt maar jou vertel ik het niet.
Heeft geen zin.
Je weet nu wel DAT het wellicht kan, en daar dus even naar moet zoeken.

Acties:
  • 0 Henk 'm!

  • McKaamos
  • Registratie: Maart 2002
  • Niet online

McKaamos

Master of the Edit-button

mcDavid schreef op maandag 12 november 2012 @ 11:27:
[...]

Of je de mosfet voor of achter de load zet, maakt weinig uit. Als hij maar goed om gemonteerd is.
Ahh ok, dat scheelt :) Dan is het een kwestie van 2 draadjes omwisselen.
Met een mosfet kan dat (voor zover ik begrepen heb) juist wel.
Dat gaf het filmpje ook aan idd.

Iemand een Tina2 in de aanbieding?


Acties:
  • 0 Henk 'm!

  • Sissors
  • Registratie: Mei 2005
  • Niet online
Je kan met je (logic level) mosfet de ground lijn aan/uit schakelen. Dat is geen enkel probleem. Wat je niet kan doen is de voedingslijn aan/uit schakelen. Als jij een enkele LED wilt schakelen is dat geen probleem, je gooit gewoon de mosfet aan de ground kant erin en je kan leuk schakelen. Maar nu moet dus zowel de voeding als de aarde worden geschakelt als ik het goed heb, gaat je niet lukken met enkel een mosfet.

Voor high-side schakelen moet je zoiets doen (of andere componenten gebruiken):
Afbeeldingslocatie: http://digital-diy.com/cache/multithumb_thumbs/b_673_0_16777215_00_http___www.digital-diy.com_digital-diy.net_Handy_Tips_Resources_P-Channel_FET.gif

[ Voor 23% gewijzigd door Sissors op 12-11-2012 12:45 ]


Acties:
  • 0 Henk 'm!

  • Mattie112
  • Registratie: Januari 2007
  • Laatst online: 16:32
Ik ben opzoek naar een "handig" commando om een backspace te doen voor mn lcd schermpje ;)

In de library zit geen "backspace", "left" oid dus het enige wat ik kon bedenken is de textrichting aanpassen, een spatie sturen en dan weer terug te draaien, maar wat ik ook probeer het klopt niet ;p

Dus ik denk miss is er hier wel iemand die weet hoe dat handig te doen is!

edit: gevonden :)

http://www.geocities.com/dinceraydin/lcd/commands.htm

code:
1
lcd.command(16);


Naja perfect :D

[ Voor 15% gewijzigd door Mattie112 op 12-11-2012 13:23 ]

3780wP (18x 210wP EC Solar) | 2x Marstek Venus E (5.12kWh)


Acties:
  • 0 Henk 'm!

  • mcDavid
  • Registratie: April 2008
  • Laatst online: 09-09 17:48
furby-killer schreef op maandag 12 november 2012 @ 12:42:
Je kan met je (logic level) mosfet de ground lijn aan/uit schakelen. Dat is geen enkel probleem. Wat je niet kan doen is de voedingslijn aan/uit schakelen. Als jij een enkele LED wilt schakelen is dat geen probleem, je gooit gewoon de mosfet aan de ground kant erin en je kan leuk schakelen. Maar nu moet dus zowel de voeding als de aarde worden geschakelt als ik het goed heb, gaat je niet lukken met enkel een mosfet.

Voor high-side schakelen moet je zoiets doen (of andere componenten gebruiken):
[afbeelding]
Ik heb voor die klok een paar posts terug heel simpel 2n7000 mosfets gebruikt. Die hangen tussen de +5v en de LED's, die per stuk weer via een weerstand aan ground hangen. Dat werkt prima.
Volgens mij is dat ook precies wat McKaamos wil

Acties:
  • 0 Henk 'm!

  • BocraM
  • Registratie: December 2005
  • Laatst online: 11-07-2022
Waarom het bij jou wel werkt kan ik niet zo snel verklaren mcDavid, maar je hoort een N-channel MOSFET in ieder geval niet zo te gebruiken.
Ik zal het proberen uit te leggen.
Een N-channel MOSFET begint te geleiden als de gate (aanstuur-poot) een hoger voltage heeft dan de source ("min"-poot), het gate threshold voltage. Bij logic level is dat vaak in de buurt van de 2 of 3 volt, en bij 5 volt zijn ze bijna helemaal "open" (dwz ze hebben bijna de laagst mogelijke weerstand).

Als je de MOSFET met zijn source aan de ground hangt werkt dat prima. Daar staat immers 0V, dus 5V aan de gate is hoger dan de Vthreshold en laat de MOSFET geleiden.
Als je de MOSFET echter met zijn drain ("plus"-poot) aan de 12V hangt werkt het niet.
Stel even dat hij WEL werkt. Dan staat er op zijn source OOK 12V (de MOSFET heeft immers vrijwel geen weerstand en de last moet de 12V nog "gebruiken"). Maar dat betekent dus ook dat er 5V (gate-spanning) min 12V = MIN 7 volt tussen de gate en de source staat. En dan kan een N-MOSFET helemaal niet geleiden (de gate moet HOGER zijn dat de source). Conclusie: de MOSFET geleidt niet.

Wat er in de praktijk gebeurt durf ik niet met zekerheid te stellen (daar is mijn kennis nog te beperkt voor) maar ik vermoed dat de MOSFET zichzelf zo reguleert dat er 2 volt verschil is tussen de gate en de source. Dan blijft er dus 3 volt over voor de last en stookt de MOSFET zelf de overige 9 volt op.

Het schema van furby-killer is de correcte manier om de plus te schakelen (het zogenaamde "high-side" schakelen). Door de gate van een P-channel MOSFET naar een lager voltage te trekken gaat deze geleiden. Dit doet de 2N3904 als je hem 5V geeft vanuit de Arduino: hij trekt de gate van de MOSFET naar 0V. Geef de 2N3904 0V en hij geleidt niet meer en de gate van de P-MOSFET wordt naar +12V getrokken (door de 10K-weerstand) en hij geleidt niet meer.

Je hebt nu trouwens geen logic level MOSFET meer nodig omdat je van +12V naar de ground schakelt en dus ongeveer -12V verschil hebt.

Acties:
  • 0 Henk 'm!

  • kitao
  • Registratie: Juli 2012
  • Laatst online: 05-09 16:01
Mattie112 schreef op maandag 12 november 2012 @ 13:01:
Ik ben opzoek naar een "handig" commando om een backspace te doen voor mn lcd schermpje ;)

http://www.geocities.com/dinceraydin/lcd/commands.htm

code:
1
lcd.command(16);
Goed dat je het al gevonden hebt, toch wil ik er nog even op reageren.
In de datasheet staan al die commando's, maar de ene datasheet is lastiger te lezen als de andere :
Deze is bijv. voor een parallel dislay : http://www.sparkfun.com/d...ADM1602K-NSW-FBS-3.3v.pdf
En deze imo veel simpelere datasheet is voor een bepaalde seriele display :
Afbeeldingslocatie: http://s10.postimage.org/q005tv04l/img62.jpg

Enkel door een serout 14, 84, 8 commando te geven verplaatst de cursus zich naar links waar 14 staat voor de pin, 84 voor 9600 baud en 8 voor het cursorcommando.
Dus wat ik wil zeggen is eigenlijk dat het in de datasheet van de desbetreffende lcd staat vermeld.

Acties:
  • 0 Henk 'm!

  • Mattie112
  • Registratie: Januari 2007
  • Laatst online: 16:32
Ja daar ben ik nu ook achter :p Weet ik veel dat er zoiets is als een "command" naar je LCD sturen :p Ik zat echt te denken om de positie van de cursor bij te houden, hier dan "-1" te doen en dan een spatie printen maarja.... Ik denk zoiets "simpels" moét toch in de library zitten....

naja nu wel in elk geval :)

3780wP (18x 210wP EC Solar) | 2x Marstek Venus E (5.12kWh)


Acties:
  • 0 Henk 'm!

  • kitao
  • Registratie: Juli 2012
  • Laatst online: 05-09 16:01
Je kan ook gewoon de display positie opgeven, zo heb ik 2 rijen, line 0 en line 1.
Lijn 0 begint bij positie 128 t/m 143 en lijn 1 bij 148t/m163
2 x 16 dus.
Lees anders even 1e hfdst smartsensors door, veel bladzijden zijn het niet :)

http://www.parallax.com/S...d=ProductName,ProductName

Acties:
  • 0 Henk 'm!

  • Mattie112
  • Registratie: Januari 2007
  • Laatst online: 16:32
Ja klopt, alleen dan moet ik van te voren weten op welke positie ik zit. Ik zocht juist naar een standaard manier om "ten alle tijden" de cursor naar links te kunnen verplaatsen :)

3780wP (18x 210wP EC Solar) | 2x Marstek Venus E (5.12kWh)


Acties:
  • 0 Henk 'm!

  • kitao
  • Registratie: Juli 2012
  • Laatst online: 05-09 16:01
Ik klik nu net je link aan, dat is idd wel handig, tnx
Ik vraag me af of dit geldt voor iedere HD44780 lcd ?

Acties:
  • 0 Henk 'm!

  • Mattie112
  • Registratie: Januari 2007
  • Laatst online: 16:32
Ik denk het wel, de controller is van het type HD44780 er zullen vast en zeker klonen zijn maar ik denk dat je een heel eind komt :p

(mijn chineese "kloon" werkt dus daarmee)

3780wP (18x 210wP EC Solar) | 2x Marstek Venus E (5.12kWh)


Acties:
  • 0 Henk 'm!

  • kitao
  • Registratie: Juli 2012
  • Laatst online: 05-09 16:01
Ik ga het proberen, deze week ga ik die seriele parallele sparkfun op de stamp aansluiten.
maar dat had ik al verkondigd geloof ik :$

C++:
1
2
3
dit is een code
[green]deze regel wil ik in groen[/green]
dat lukt nog steeds niet zo best  

:F

ok, ik snap t, geloof ik
En nu je het toch over cursorverplaatsing hebt, ben hier 2 nachten en middagen mee bezig geweest.
http://www.parallax.com/P...rintSmartSensors-v1.0.pdf
pag 28
En dit heb ik niet eens zelf geschreven, alleen al om te kijken wat er gebeurt en om de code te begrijpen kostte me zoveel tijd.
Maar bedankt voor je cpp tip, dit is in ieder geval beter leesbaar d:)b hoewel de comments bij mij gewoon in het groen staan zonder rooie streep eronder.

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
 ' -----[ Subroutine - Scroll_Message ]----------------------------------------
Scroll_Message:
cursorStart = windowRight - increment + 1 ' Rightmost character in window
head = 0 ' Initialize head and tail
tail = increment - 1 ' of message
' Scrolling loop
DO WHILE tail<(MessageEnd-MessageStart)+(windowRight-windowLeft+increment)
SEROUT LcdPin, T9600, [cursorStart] ' Rightmost character in window
FOR pointer = head TO tail ' Clear old characters.
SEROUT LcdPin, T9600, [" "]
NEXT
PAUSE timeOff ' Let characters fade away
SEROUT LcdPin, T9600, [cursorStart] ' Rightmost character in window
' This FOR...NEXT loop refreshes the message, shifted increment characters
' to the left each time through until the end of the EEPROM message.
' Then, it fills the display with space characters as the remainder of the
' message shifts out to the window.
FOR pointer = head TO tail
IF (pointer <= (MessageEnd - MessageStart - 1)) THEN
READ pointer + MessageStart, character
ELSE
character = " "
ENDIF
SEROUT LcdPin, T9600, [character]
NEXT
PAUSE timeOn ' Give the characters some time
' Increment until at window-left
cursorStart = cursorStart - increment MIN windowLeft
tail = tail + increment ' Increment tail pointer
' Increment head pointer if tail pointer > window width.
IF tail > (windowRight - windowLeft) THEN
head = head + increment
ELSE
head = 0
ENDIF
LOOP ' Repeat scrolling loop
RETURN

Dit is het origineel :
Afbeeldingslocatie: http://s8.postimage.org/yfnxttrk1/img63.jpg

[ Voor 153% gewijzigd door kitao op 12-11-2012 18:15 ]


Acties:
  • 0 Henk 'm!

  • McKaamos
  • Registratie: Maart 2002
  • Niet online

McKaamos

Master of the Edit-button

Ok, we zijn weer een stapje verder: we weten dat een N-mosfet dus niet zo heel handig is.

Dan kom ik met de volgende vraag. Wat kan ik dan beter gebruiken? een simpele Transistor die minstens 2Amp kan schakelen? En welke zou dat moeten zijn?
Ik heb hier wel wat BC547's liggen, maar die kunnen volgens de datasheet maar 200mA schakelen.

Iemand een Tina2 in de aanbieding?


Acties:
  • 0 Henk 'm!

  • kitao
  • Registratie: Juli 2012
  • Laatst online: 05-09 16:01
@McKaamos
Heb je geen typeno. van die sigma 95 dots matrix ?
Misschien staat er wel iets in de datasheet hoe je die het beste kunt aansluiten ?
http://www.datasheetarchi...%20DISPLAY-datasheet.html

Acties:
  • 0 Henk 'm!

  • McKaamos
  • Registratie: Maart 2002
  • Niet online

McKaamos

Master of the Edit-button

kitao schreef op dinsdag 13 november 2012 @ 04:47:
@McKaamos
Heb je geen typeno. van die sigma 95 dots matrix ?
Misschien staat er wel iets in de datasheet hoe je die het beste kunt aansluiten ?
http://www.datasheetarchi...%20DISPLAY-datasheet.html
Het is een Sigma AS 226.
Ik heb een paar maanden terug al enkele dagen besteed aan zoeken, rondvragen, etc.
Het enige wat ik toen vond was een link naar een website die plat lag. Via Archive.org heb ik nog wat info kunnen vinden, maar plaatjes deden het niet.
Daarbij werkt de originele afstandsbediening niet meer (van binnen weg gevreten door lekkende batterijen) en is de originele voeding weg, dus de originele controller gebruiken is ook geen optie.

De voeding zou een 9V AC 3Amp moeten zijn. Wat ook wel ongeveer moet kloppen, gezien je 2amp nodig hebt voor 95 leds en dan nog 1 amp voor de overige elektronica en veiligheidsmarge.
De stroom werdt wel gelijkgericht aan de binnenkant van de display, maar niet afgevlakt.
Ik vermoed dat de netspanning frequentie als verversingssnelheid diende. Wat wordt bevestigd door de samenkoppeling van de spanningstoevoer voor de shiftregisters en de strobe draad (heb ze losgekoppeld)

De schakeling van de matrix zelf heb ik al wel ge-reverse engineered.
Die gooit gewoon één horitzontale lijn aan de plus, en trekt dan de kolom naar massa door een transistor (darlington array), die weer wordt gestuurd door een shiftregister.
De verbindingen aan het bord heb ik al wel uitgevogeld.
7 positive lijnen voor de horitzonale rijen
1 positief voor de shiftregisters
1 common negatief
data
latch
strobe
(niet op volgorde)
en ook nog een datalijntje voor de IR sensor, maar die gebruik ik niet.

Van een oude ATX PSU heb ik een lab bench powersupply gemakakt.
De matrix zelf wil prima werken op 12volt DC (9v AC gelijkrichten geeft 11-12volt zon'n beetje) en met de arduino wil ik dan 12volt op een rij schakelen en de shiftregisters vullen met shift-out.

[ Voor 21% gewijzigd door McKaamos op 13-11-2012 09:23 ]

Iemand een Tina2 in de aanbieding?


Acties:
  • 0 Henk 'm!

  • Mattie112
  • Registratie: Januari 2007
  • Laatst online: 16:32
kitao schreef op maandag 12 november 2012 @ 16:21:
Ik ga het proberen, deze week ga ik die seriele parallele sparkfun op de stamp aansluiten.
maar dat had ik al verkondigd geloof ik :$

C++:
1
2
3
dit is een code
[green]deze regel wil ik in groen[/green]
dat lukt nog steeds niet zo best  

:F

ok, ik snap t, geloof ik
En nu je het toch over cursorverplaatsing hebt, ben hier 2 nachten en middagen mee bezig geweest.
http://www.parallax.com/P...rintSmartSensors-v1.0.pdf
pag 28
En dit heb ik niet eens zelf geschreven, alleen al om te kijken wat er gebeurt en om de code te begrijpen kostte me zoveel tijd.
Maar bedankt voor je cpp tip, dit is in ieder geval beter leesbaar d:)b hoewel de comments bij mij gewoon in het groen staan zonder rooie streep eronder.

Visual Basic:
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
 ' -----[ Subroutine - Scroll_Message ]----------------------------------------
Scroll_Message:
cursorStart = windowRight - increment + 1 ' Rightmost character in window
head = 0 ' Initialize head and tail
tail = increment - 1 ' of message
' Scrolling loop
DO WHILE tail<(MessageEnd-MessageStart)+(windowRight-windowLeft+increment)
SEROUT LcdPin, T9600, [cursorStart] ' Rightmost character in window
FOR pointer = head TO tail ' Clear old characters.
SEROUT LcdPin, T9600, [" "]
NEXT
PAUSE timeOff ' Let characters fade away
SEROUT LcdPin, T9600, [cursorStart] ' Rightmost character in window
' This FOR...NEXT loop refreshes the message, shifted increment characters
' to the left each time through until the end of the EEPROM message.
' Then, it fills the display with space characters as the remainder of the
' message shifts out to the window.
FOR pointer = head TO tail
IF (pointer <= (MessageEnd - MessageStart - 1)) THEN
READ pointer + MessageStart, character
ELSE
character = " "
ENDIF
SEROUT LcdPin, T9600, [character]
NEXT
PAUSE timeOn ' Give the characters some time
' Increment until at window-left
cursorStart = cursorStart - increment MIN windowLeft
tail = tail + increment ' Increment tail pointer
' Increment head pointer if tail pointer > window width.
IF tail > (windowRight - windowLeft) THEN
head = head + increment
ELSE
head = 0
ENDIF
LOOP ' Repeat scrolling loop
RETURN

Dit is het origineel :
[afbeelding]
Dat hangt er natuurlijk vanaf wát voor code je gebruikt :)

Lees even dit stukje uit de FAQ dan denk ik dat je weet wat ik precies bedoel:
De code-tag

Syntax:
code: filename
1
 for (i = 0; i < 4; i++) { .. }


Attributen:

language: ( asp | c | c++,cpp | c#,csharp | cobol | css | delphi | fortran | html | java | js,javascript | jsf | jsp | pascal | perl | php | python | sql | vb | vb.net | vbs,vbscript | xml | xpath ) - (programmeer)taal; voor de meeste van deze talen zijn highlighters beschikbaar
line: nummer - startnummer voor de lijn-nummering
tabwidth: nummer - tabbreedte in aantal spaties
filename: naam - naam van het bestand

Gebruik: het plaatsen van (programmeer)code in pre-formatted tekst met lijn-nummering

Note: de code-tag kan niet 'kort' afgesloten worden dmv
[/quote]

In jouw voorbeeld kan je bijv "vb", (visualBASIC / BASICstamp) gebruiken (zie mijn quote!)

edit:
En voor de arduino is het dus c++, de taal waarop de arduino programming language gebaseerd is.

3780wP (18x 210wP EC Solar) | 2x Marstek Venus E (5.12kWh)


Acties:
  • 0 Henk 'm!

  • Rusky
  • Registratie: December 2000
  • Laatst online: 29-08 12:59
Fuzzillogic schreef op zaterdag 10 november 2012 @ 18:01:
Zelf zou ik eerder directe integers uitwisselen (zie stream.parseInt()). Onder water werkt de remoteswitch library ook direct met die integers. Dat is flexibeler en stelt je in makkelijker in staat om nieuwe apparaten te "leren" op de server, zonder dat je software hoeft aan te passen. Dit type signalen bestaat immers maar uit twee componenten: een code en een pulslengte. Dat is voldoende voor zowel het versturen als ontvangen. De dev-branche van de remoteswitch library bevatten voorbeelden die laten zien hoe je aan die getallen komt en hoe je ze kunt versturen.
Bedoel je nu dat ik met de ShowReceivedCode van jou de code kan zien, en dan deze direct moet versturen vanaf mijn php? En dat de arduino 1 op 1 deze doorstuurt?
Heb ik dan geen library van jou meer nodig? Of zit ik helemaal verkeerd te denken.

mijn pc


Acties:
  • 0 Henk 'm!

  • kitao
  • Registratie: Juli 2012
  • Laatst online: 05-09 16:01
@McKaamos
Voor iemand die zich geen electronica-genie noemt vind ik het toch knap welk project je op je hebt genomen met zoveel versleten onderdelen en gebrek aan info.
Ik zal ook eens zoeken naar die sigma op t net, als ik wat vind laat ik je weten.

@Mattie
Sorry, ik heb ook bij de faq gekeken en de codetag gevonden maar dat stukje waar jij het over hebt, heb ik blijkbaar gemist. Met jouw uitleg ben ik goed geholpen en kom ik er wel uit.
Tnx.
Ps, Pbasic is wel makkelijker leesbaar als C vind je niet ? Wikipedia: PBASIC
Of misschien komt dat omdat basic mijn eerste progtaal was op een Commodore64 waar ik kennis mee maakte. :/

[ Voor 20% gewijzigd door kitao op 13-11-2012 16:18 ]


Acties:
  • 0 Henk 'm!

  • McKaamos
  • Registratie: Maart 2002
  • Niet online

McKaamos

Master of the Edit-button

@Kitao: Ach, ik kan schema's lezen, solderen en heb wat basiskennis over wat onderdeeltjes doen.
Zodra je me gaat vragen welke weerstand er precies tussen transistor X en de arduino moet bij gebruik van voedingsspanning Y, laat ik het afweten ;)
Zo dus ook m'n foutje met die NChannel mosfet... Dacht, die kan ik vast ook wel aan het begin parkeren, maar dat blijkt dus niet zo. Iets te simpel gedacht :P

Iemand een Tina2 in de aanbieding?


Acties:
  • 0 Henk 'm!

  • kitao
  • Registratie: Juli 2012
  • Laatst online: 05-09 16:01
Dat begrijp ik dan niet helemaal, je hebt wel schuifregisters en darlington-arrays er zelf aan gekoppeld maar het verschil tussen een p- en n-mosfet was je onbekend ? :?

Overigens zou ik dat zelf ook allemaal weer moeten opzoeken, is een beetje in vergetelheid geraakt helaas. :-(

[ Voor 25% gewijzigd door kitao op 13-11-2012 16:20 ]


Acties:
  • 0 Henk 'm!

  • Mattie112
  • Registratie: Januari 2007
  • Laatst online: 16:32
kitao schreef op dinsdag 13 november 2012 @ 15:52:
@McKaamos
Voor iemand die zich geen electronica-genie noemt vind ik het toch knap welk project je op je hebt genomen met zoveel versleten onderdelen en gebrek aan info.
Ik zal ook eens zoeken naar die sigma op t net, als ik wat vind laat ik je weten.

@Mattie
Sorry, ik heb ook bij de faq gekeken en de codetag gevonden maar dat stukje waar jij het over hebt, heb ik blijkbaar gemist. Met jouw uitleg ben ik goed geholpen en kom ik er wel uit.
Tnx.
Ps, Pbasic is wel makkelijker leesbaar als C vind je niet ? Wikipedia: PBASIC
Of misschien komt dat omdat basic mijn eerste progtaal was op een Commodore64 waar ik kennis mee maakte. :/
Mwa het ligt er een beetje aan. let wel even op het verschil tussen C en C++, persoonlijk vind ik C lastiger dan C++ maar dat komt denk ook doordat ik al een aantal jaar ervaring heb met java :p

3780wP (18x 210wP EC Solar) | 2x Marstek Venus E (5.12kWh)


Acties:
  • 0 Henk 'm!

  • McKaamos
  • Registratie: Maart 2002
  • Niet online

McKaamos

Master of the Edit-button

kitao schreef op dinsdag 13 november 2012 @ 16:06:
Dat begrijp ik dan niet helemaal, je hebt wel schuifregisters en darlington-arrays er zelf aan gekoppeld maar het verschil tussen een p- en n-mosfet was je onbekend ? :?

Overigens zou ik dat zelf ook allemaal weer moeten opzoeken, is een beetje in vergetelheid geraakt helaas. :-(
Ohh, nee, die heb ik niet zelf gekoppeld.
Die zitten al op het bord.
En de ShiftOut tutorial van Arduino.cc is goed te begrijpen. Dus dat krijg ik dan wel voor elkaar

Maargoed, wat ik nu gewoon nodig heb is een goede oplossing om 12volt aan en uit te schakelen.

Iemand een Tina2 in de aanbieding?


Acties:
  • 0 Henk 'm!

  • kitao
  • Registratie: Juli 2012
  • Laatst online: 05-09 16:01
LISP leek me wel wat, voor AI's enzo, maar het programmeren als geheel daarvan weet ik nu dat ik daar weinig talent voor heb, zo had je toen ook peek en poke, toen heb ik het bijltje erbij neergelegd.
Daarom was ik ook 2 dagen bezig om die cursorverplaatsingen in die subroutine te volgen hoewel dit ook kwam omdat er veel in verwezen wordt naar de eeprom, de lcd-opbouw, de vele variabelen e.d.
Maar al met al, als ik dat zelf moet schrijven dan ga ik hopeloos vastlopen. :/

@McKaamos
Ik ken die video's die McDavid liet zien van afrotechmods, lijkt me duidelijk dat dat kan werken zoals vertoond.
Of misschien moet je simpeler beginnen en dan gaan opbouwen tot meer complex zoals wat je nu op je hals hebt gehaald met een 7x95 matrix.
Probeer eerst de basis en werk dat dan verder uit.

Afbeeldingslocatie: http://arduino.cc/playground/uploads/Main/Matrix.gif

Enne, .... McKaamos, jij heb toevallig ook niet nog een nick die Yoram heet ?
Wel toevallig, 2 personen binnen een week die ongeveer precies met hetzelfde project komen :/

Hier staat van alles beschreven voor het programmeren van de Sigma AS266.
Aansturen lichtkrant Sigma ASC333

Dan kom ik terug op mijn toezegging, over die lichtkrant valt bitter weinig terug te vinden, die ga ik echt niet meer uitzoeken. }:|

Via Archive.org heb ik nog wat info kunnen vinden, maar plaatjes deden het niet.
Geef die link dan maar, misschien dat anderen wel die plaatjes kunnen produceren.

[ Voor 56% gewijzigd door kitao op 13-11-2012 18:35 ]


Acties:
  • 0 Henk 'm!

  • McKaamos
  • Registratie: Maart 2002
  • Niet online

McKaamos

Master of the Edit-button

kitao schreef op dinsdag 13 november 2012 @ 17:14:
LISP leek me wel wat, voor AI's enzo, maar het programmeren als geheel daarvan weet ik nu dat ik daar weinig talent voor heb, zo had je toen ook peek en poke, toen heb ik het bijltje erbij neergelegd.
Daarom was ik ook 2 dagen bezig om die cursorverplaatsingen in die subroutine te volgen hoewel dit ook kwam omdat er veel in verwezen wordt naar de eeprom, de lcd-opbouw, de vele variabelen e.d.
Maar al met al, als ik dat zelf moet schrijven dan ga ik hopeloos vastlopen. :/

@McKaamos
Ik ken die video's die McDavid liet zien van afrotechmods, lijkt me duidelijk dat dat kan werken zoals vertoond.
Of misschien moet je simpeler beginnen en dan gaan opbouwen tot meer complex zoals wat je nu op je hals hebt gehaald met een 7x95 matrix.
Probeer eerst de basis en werk dat dan verder uit.

[afbeelding]

Enne, .... McKaamos, jij heb toevallig ook niet nog een nick die Yoram heet ?
Wel toevallig, 2 personen binnen een week die ongeveer precies met hetzelfde project komen :/

[...]

Aansturen lichtkrant Sigma ASC333

Dan kom ik terug op mijn toezegging, over die lichtkrant valt bitter weinig terug te vinden, die ga ik echt niet meer uitzoeken. }:|


[...]


Geef die link dan maar, misschien dat anderen wel die plaatjes kunnen produceren.
Sowieso heb ik al lopen klooien met een LED kubus, dus ledjes in een matrix aansturen met een Arduino kan ik wel. Das het probleem ook niet en is het nooit geweest.
Het gaat me er om dat ik iets nodig heb om 12v 2A te kunnen schakelen.

En wat betreft die lichtkrant: i know, er is ook nauwelijks iets over te vinden.
Dat topic gaat over serieel aansturen, maar ik heb de oude controller print aan de kant gesodemieterd. Hij is er nog wel, maar heb er geen passende voeding bij, so ain't gonna work.
Ombouwen voor DC spanning is een afgrijselijke hoop werk met weinig kans van slagen.
Een voeding vinden of zelf fabriceren is nog meer werk dan ff prutsen met een Arduino, dus laat de oude print maar lekker voor wattie is.
Daarbij heb ik met een Arduino ook veel meer vrijheid in wat ik kan weergeven.

Het enige wat ik gebruik van die lichtkrant is een langwerpig bord met een baklading ledjes (ok, van die 7x5 grids) er op, shiftregisters en darlington arrays.

Ik had trouwens al veel eerder gepost over dit display, dus ik was er ook niet toevallig binnen een week met die Yoram ;)
Destijds werdt me dan ook die Nchannel Mosfet aangeraden, maar die gaat schijnbaar niet makkelijk werken.


Anyway, lang verhaal kort: ik heb gewoon iets nodig om die 12volt te schakelen. Thats it. De rest vogel ik wel uit, das programmeerwerk.

Iemand een Tina2 in de aanbieding?


Acties:
  • 0 Henk 'm!

  • kitao
  • Registratie: Juli 2012
  • Laatst online: 05-09 16:01
Ik respecteer je doorzettingsvermogen maar iemand anders zal hier vast veel meer vanaf weten als ik.

Acties:
  • 0 Henk 'm!

  • naaitsab
  • Registratie: Augustus 2005
  • Laatst online: 21:26
Is het eigenlijk mogelijk om de backlight van een LCD schermpje (HD44780 dus 5V en GND) aan te sturen met een analoge poort? Zodat deze bijvoorbeeld 's nachts 3V krijgt of helemaal uit. Digitaal is volgens mij gewoon 5V of "0"V dus dat is meer een schakelaar effect, buiten dat ik heb geen digitale poorten meer vrij daarvoor :+

if (!coffee) {
Work = false; }


Acties:
  • 0 Henk 'm!

  • Sissors
  • Registratie: Mei 2005
  • Niet online
Je kan altijd PWM gebruiken. (Al ken ik niet precies de eisen aan die backlights, waarschijn sowieso transistortje ertussen).

@mckaamos, nog steeds dezelfde:
Afbeeldingslocatie: http://digital-diy.com/cache/multithumb_thumbs/b_673_0_16777215_00_http___www.digital-diy.com_digital-diy.net_Handy_Tips_Resources_P-Channel_FET.gif
Oftewel pak een random NMOS/NPN (Bijvoorbeeld gewoon BS170, maar zijn genoeg mogelijkheden), een weerstand naar voeding (groter is minder stroom, maar ook trager bij schakelen, hoe groot precies is wel uit te rekenen als je daarbij komt). En dan een random power PMOS die genoeg kan schakelen. Gezien je daar -12V gate-source spanning op gooit gaat die wel open.

Acties:
  • 0 Henk 'm!

  • naaitsab
  • Registratie: Augustus 2005
  • Laatst online: 21:26
furby-killer schreef op dinsdag 13 november 2012 @ 22:47:
Je kan altijd PWM gebruiken. (Al ken ik niet precies de eisen aan die backlights, waarschijn sowieso transistortje ertussen).
Mn hele digitale rij is in gebruik door diverse sensoren, LCD zelf en een relais dus dat werkt ook niet. Analoog is nog in zn geheel vrij.

if (!coffee) {
Work = false; }


Acties:
  • 0 Henk 'm!

  • kitao
  • Registratie: Juli 2012
  • Laatst online: 05-09 16:01
@naaitsab
Voor backlight heb je helemaal geen pinnen nodig.
Ik heb die zo aangesloten en dat werkt prima :
Afbeeldingslocatie: http://s11.postimage.org/iv9j2010v/img64.jpg
klik
Het kan zijn dat jij bedoelt hoe je de lichtsterkte van het backlight kunt aansturen met de mcu, maar dan heb ik deze tekening voor niks gemaakt en je post niet goed begrepen want dat gaat natuurlijk niet met dit schema.

Verder : zie bijvoorbeeld http://arduino.cc/en/Tutorial/AnalogInput als basisvoorbeeldje, zoiets bedoelde furby aangaande de pwm waarschijnlijk :
Afbeeldingslocatie: http://itp.nyu.edu/physcomp/images/labs/arduino_analog_input_schem.png
Zoals je ziet zijn - in bovenstaand en het in de link getoonde schema - de analoge pinnen A0-A5 bedoeld als input, ik weet niet of je die ook als output kunt gebruiken, daarvoor ben ik te kort bezig met de uno, maar zoals ik tot nu toe heb gezien worden die enkel als adc toegepast, dwz ze 'lezen' de analoge inputspanning en converteren die naar een overeenkomstig digitaal getal binnen een bepaalde schaal. (0 tot 1024 in dit geval). "Schrijven" doen ze via een andere niet-analoge pin of een monitor.
Ipv een potmetertje kun je ook iets anders gebruiken, een fotocel bijvoorbeeld oid.
Dit schema kost je wel een pinnetje 9 helaas. :-(

[ Voor 55% gewijzigd door kitao op 14-11-2012 05:43 ]


Acties:
  • 0 Henk 'm!

  • Sissors
  • Registratie: Mei 2005
  • Niet online
naaitsab schreef op dinsdag 13 november 2012 @ 22:52:
[...]

Mn hele digitale rij is in gebruik door diverse sensoren, LCD zelf en een relais dus dat werkt ook niet. Analoog is nog in zn geheel vrij.
Je kan dan proberen daar een pin vrij te maken, of als je nog genoeg rekenkracht hebt software pwm te gebruiken.

Er is geen reden waarom je voor een sensor, lcd of relais een pwm pin nodig hebt, dus die kan je ook gewoon op een analoge pin zetten.

[ Voor 15% gewijzigd door Sissors op 14-11-2012 08:08 ]


Acties:
  • 0 Henk 'm!

  • naaitsab
  • Registratie: Augustus 2005
  • Laatst online: 21:26
kitao schreef op woensdag 14 november 2012 @ 03:51:
@naaitsab
Voor backlight heb je helemaal geen pinnen nodig.
Wel als je m digitaal (ala in code) schakelbaar wilt maken ;)
Analoog is volgens mij ook meer bedoelt voor input en niet zo zeer een output ergens tussen de 0 en 5V
Zoals jij m aangesloten hebt staat het bij geen enkel arduino project en moest ik zelf ook uit de datasheet van het scherm halen, dus blijkbaar gebruikt bijna niemand backlight en zie je geen fluit :z
furby-killer schreef op woensdag 14 november 2012 @ 08:07:
[...]

Je kan dan proberen daar een pin vrij te maken, of als je nog genoeg rekenkracht hebt software pwm te gebruiken.

Er is geen reden waarom je voor een sensor, lcd of relais een pwm pin nodig hebt, dus die kan je ook gewoon op een analoge pin zetten.
Die sensoren geven allen een digitaal TTL signaal terug, aansluiten op de Analog IN heeft dus weinig zin zonder het onnodig complex te maken.

Zal vandaag eens proberen of ik een PWM vrij kan maken.

if (!coffee) {
Work = false; }


Acties:
  • 0 Henk 'm!

  • Sissors
  • Registratie: Mei 2005
  • Niet online
Sommige arduinos hebben een paar analogIn pinnen die alleen als analoog kunnen worden gebruikt. Maar in principe kan verder elke analogin pin ook als digitale pin worden gebruikt (er is geen enkele reden dat arduino zon onderscheid maakt tussen analoge en digitale pinnen).

Bij een atmega is in principe elke pin een digitale pin, en heeft hij nog een extra functie daarnaast. Die extra functie kan een pin van een seriele poort zijn, of PWM, etc, maar ook een analoge input pin. Maar hij is nog steeds primair een digitale pin.

Acties:
  • 0 Henk 'm!

  • mcDavid
  • Registratie: April 2008
  • Laatst online: 09-09 17:48
Ik ben er wel achter gekomen dat DigitalRead niet werkt op de analoge pins. Heb dat opgelost met
if (AnalogRead(pin) > 512) maar ik kan me voorstellen dat bepaalde libraries dus niet zomaar met een analogen input werken.

Acties:
  • 0 Henk 'm!

  • Sissors
  • Registratie: Mei 2005
  • Niet online
mcDavid schreef op woensdag 14 november 2012 @ 09:56:
Ik ben er wel achter gekomen dat DigitalRead niet werkt op de analoge pins. Heb dat opgelost met
if (AnalogRead(pin) > 512) maar ik kan me voorstellen dat bepaalde libraries dus niet zomaar met een analogen input werken.
DigitalRead werkt gewoon op analoge pin. (Op die paar uitzonderingen na, bij arduino nano zijn A6 en A7 enkel analogRead, daar zit geen digitale hardware achter. Alle andere analoge pinnen hebben ook digitalread).

Acties:
  • 0 Henk 'm!

  • mcDavid
  • Registratie: April 2008
  • Laatst online: 09-09 17:48
Ah, het was inderdaad een gevalletje A7 van de nano :)

-edit-
overigens vind ik het apart dat de nano die extra A6 en A7 heeft. Er zit gewoon de zelfde ATMega328 op. Betekent dat dat die twee pinnetjes bij een gewone arduino simpelweg niet naar buiten gevoerd worden?

[ Voor 67% gewijzigd door mcDavid op 14-11-2012 14:54 ]


Acties:
  • 0 Henk 'm!

  • kitao
  • Registratie: Juli 2012
  • Laatst online: 05-09 16:01
naaitsab schreef op woensdag 14 november 2012 @ 08:38:
Wel als je m digitaal (ala in code) schakelbaar wilt maken ;)
Ja ok, dat gaf ik ook al enigzins aan in mn vorige post.
Analoog is volgens mij ook meer bedoeld voor input en niet zo zeer een output ergens tussen de 0 en 5V
Dat leek mij ook maar jij vroeg toch of je die A 0-5 pinnetjes kon gebruiken om de backlight aan te sturen ?
Zoals jij m aangesloten hebt staat het bij geen enkel arduino project en moest ik zelf ook uit de datasheet van het scherm halen, dus blijkbaar gebruikt bijna niemand backlight en zie je geen fluit :z
Ik heb dat gewoon geprobeerd.
In deze tutorial zie je wel hoe de contrast wordt aangesloten, maar inderdaad niks over de BL.
Het werkt prima zo en er is niks doorgebrand vandaar die extra 220 Ohm weerstand die je bij contrast niet ziet.
Zoals ik jouw vraag begreep was je van plan het BL (backlight) s'nacht op laag pitje of helemaal uit te zetten.
Volgens 'mijn' schema kan dat dus zonder de arduino erbij te betrekken, ik denk dan aan een timerschakelaar of een fotocel. :)

Acties:
  • 0 Henk 'm!

  • kitao
  • Registratie: Juli 2012
  • Laatst online: 05-09 16:01
furby-killer schreef op woensdag 14 november 2012 @ 09:18:
Sommige arduinos hebben een paar analogIn pinnen die alleen als analoog kunnen worden gebruikt. Maar in principe kan verder elke analogin pin ook als digitale pin worden gebruikt (er is geen enkele reden dat arduino zon onderscheid maakt tussen analoge en digitale pinnen).

Bij een atmega is in principe elke pin een digitale pin, en heeft hij nog een extra functie daarnaast. Die extra functie kan een pin van een seriele poort zijn, of PWM, etc, maar ook een analoge input pin. Maar hij is nog steeds primair een digitale pin.
Ok, ik heb een uno volgens dit schema :
Afbeeldingslocatie: http://arduino.cc/en/uploads/Tutorial/LCD_schem.png
Als ik nu een ledje aansluit op pin A0 of A1 of A2 of A3 of A4 of A5 en ik maak een code zoals bijvoorbeeld :
code:
1
Output pin Ax HIGH


Dan zou dat ledje moeten gaan branden.
Ik ga het proberen.

ps, als dat gaat lukken dan mogen die arduinoklanten wat mij betreft wel die opgedrukte tekst van 'Analog Input' verwijderen. Dat wekt dan maar enkel verwarring op. }:|

[ Voor 8% gewijzigd door kitao op 14-11-2012 16:21 . Reden: ps ]


Acties:
  • 0 Henk 'm!

  • Sissors
  • Registratie: Mei 2005
  • Niet online
Daar heb je bij mij weinig discussie over, ik denk dat het idee was dat het makkelijker was ofzo om zon harde scheiding tussen digitale en analoge pinnen te doen, maar ik heb het altijd verwarrend gevonden.
Je moet het gewoon zien als elke pin is GPIO (general purpose Input/output), en sommige (de meeste) hebben nog een extra functie.
mcDavid schreef op woensdag 14 november 2012 @ 14:52:
Ah, het was inderdaad een gevalletje A7 van de nano :)

-edit-
overigens vind ik het apart dat de nano die extra A6 en A7 heeft. Er zit gewoon de zelfde ATMega328 op. Betekent dat dat die twee pinnetjes bij een gewone arduino simpelweg niet naar buiten gevoerd worden?
Had ik tijdje geleden nagezocht, omdat ik het eerst ook vreemd vond dat die A6 en A7 geen digitale hardware erachter hebben. Verschil is of het de DIP versie of de SMD versie is. De SMD versie heeft 2 pinnen meer, en om die te gebruiken hebben ze het makkelijkste gedaan wat ze konden verzinnen: twee schakelaartjes extra zodat je ze met de ADC kan verbinden.

De DIP versie heeft die twee pinnen niet, en daarom zullen arduinos met dip versie niet die A6 en A7 hebben (en bij hun is dus wel echt elke analoge pin ook geschikt voor digitaal).

Acties:
  • 0 Henk 'm!

  • kitao
  • Registratie: Juli 2012
  • Laatst online: 05-09 16:01
furby-killer schreef op woensdag 14 november 2012 @ 17:12:
Daar heb je bij mij weinig discussie over, ik denk dat het idee was dat het makkelijker was ofzo om zo'n harde scheiding tussen digitale en analoge pinnen te doen, maar ik heb het altijd verwarrend gevonden.
Je moet het gewoon zien als elke pin is GPIO (general purpose Input/output), en sommige (de meeste) hebben nog een extra functie.
Ok, duidelijk.
De fabrikant had dit misschien beter net zoals bij pin 3,5,6,9,10,11 tussen haakjes erbij kunnen zetten.
Daar staat het erbij dat die pinnen ook als pwm kunnen worden gebruikt.
Nu blijkt dus dat (sommige) analoge input pinnen gewoon als digitale output kunnen worden toegepast.
Tnx, ik moet het nog gaan proberen en heb zelf geen pin-tekort momenteel maar is wel handig om te weten :)

Acties:
  • 0 Henk 'm!

  • Dr.Roelski
  • Registratie: Juni 2001
  • Laatst online: 04-09 21:02

Dr.Roelski

Walk on ....

McKaamos schreef op dinsdag 13 november 2012 @ 18:50:
[...]

Sowieso heb ik al lopen klooien met een LED kubus, dus ledjes in een matrix aansturen met een Arduino kan ik wel. Das het probleem ook niet en is het nooit geweest.
Het gaat me er om dat ik iets nodig heb om 12v 2A te kunnen schakelen.

En wat betreft die lichtkrant: i know, er is ook nauwelijks iets over te vinden.
Dat topic gaat over serieel aansturen, maar ik heb de oude controller print aan de kant gesodemieterd. Hij is er nog wel, maar heb er geen passende voeding bij, so ain't gonna work.
Ombouwen voor DC spanning is een afgrijselijke hoop werk met weinig kans van slagen.
Een voeding vinden of zelf fabriceren is nog meer werk dan ff prutsen met een Arduino, dus laat de oude print maar lekker voor wattie is.
Daarbij heb ik met een Arduino ook veel meer vrijheid in wat ik kan weergeven.

Het enige wat ik gebruik van die lichtkrant is een langwerpig bord met een baklading ledjes (ok, van die 7x5 grids) er op, shiftregisters en darlington arrays.

Ik had trouwens al veel eerder gepost over dit display, dus ik was er ook niet toevallig binnen een week met die Yoram ;)
Destijds werdt me dan ook die Nchannel Mosfet aangeraden, maar die gaat schijnbaar niet makkelijk werken.


Anyway, lang verhaal kort: ik heb gewoon iets nodig om die 12volt te schakelen. Thats it. De rest vogel ik wel uit, das programmeerwerk.
Ik gebruik deze: IRLZ 34 N HEXFET Kun je direct met 5V aansturen en kan een hoop amperes schakelen. Let wel op, op gegeven moment moet je gaan koelen.

// edit2: bij 2A schakelen, gestuurd met 5V wordt de FET 5,7 graden warmer :+

[ Voor 2% gewijzigd door Dr.Roelski op 14-11-2012 19:54 . Reden: type component ]


Acties:
  • 0 Henk 'm!

  • Rusky
  • Registratie: December 2000
  • Laatst online: 29-08 12:59
wanneer ik een functie moet aanroepen van de klik aan klik uit moet ik volgend aangeven:
actionSwitch.sendSignal(1,'B',true);
Nu stuur ik via een php script deze gegevens door, en haal ik op met een Serial.readBytesUntil.
Dit gaat goed, en krijg alle waarden netjes in een array.
Dan wil ik deze waarden in de functie gebruiken, maar dan gaat het mis met de hoge commas ' en ' in de functie. Hoe krijg ik deze netjes weergegeven?
Want die hoge commas laten staan en dan de array aanroepen werkt niet (wat heel begrijpelijk is).
Dus je zou een tweede string met de ' serialData[2] ' moeten krijgen. Maar hoe krijg je die ' ' erin????

char functie[3] = {"'", serialData[2], "'"}; // werkt niet :(

char functie[3] = {39, serialData[2], 39}; // krijg ik dit : 'B'²… ... (waar komt die ²… ... vandaan? is maar 3 karakters toch?)

en btw: wanneer ik : actionSwitch.sendSignal(serialData[0], functie, true);
doe krijg ik de foutmelding : invalid conversion from 'char*' to 'char'

ff hele code:
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
#include <RemoteSwitch.h>

ActionSwitch actionSwitch(11);
char serialData[10];

void setup() {
  Serial.begin(9600);
}

void loop() {
     if (Serial.available() > 0) { 
       Serial.readBytesUntil('\n', serialData, 9);
       
       Serial.print("nul (0): "); Serial.println(serialData[0]);
       Serial.print("tweede (2): "); Serial.println(serialData[2]);
       Serial.print("vierde (4): "); Serial.println(serialData[4]);
       
       char functie[3] = {39,serialData[2],39};
       
       Serial.println(functie);
       
       if (serialData[4] == 't') {
           actionSwitch.sendSignal(serialData[0], functie, true);
           Serial.println("Hij zou AAN moeten gaan");
       } else {
           actionSwitch.sendSignal(serialData[0], serialData[2], false);
           Serial.println("Hij zou UIT moeten gaan");    
       }
   }
}


output : bij: 1,B,t\n
nul (0): 1
tweede (2): B
vierde (4): t
'B'²… ...
Hij zou AAN moeten gaan

[ Voor 54% gewijzigd door Rusky op 14-11-2012 20:28 ]

mijn pc


  • kitao
  • Registratie: Juli 2012
  • Laatst online: 05-09 16:01
Mogge,
Het werkt inderdaad om op de uno alle A0-5 pinnen als output te gebruiken.
Dit is het uiteindelijke schema om het BackLight aan te sturen :
Afbeeldingslocatie: http://s18.postimage.org/binq56os5/img65.jpg
klik
(de rest van de bedrading heb ik er niet bij getekend maar is volgens de afbeelding uit mijn vorige post)
Met als bijbehorende code :
C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// dit programma laat de lcd knipperen mbv BL (backlight)op een analoge pin
// include the library code:
#include <LiquidCrystal.h>

// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
int Apin = A5; // Analog Input pin A5 wordt gebruikt als output om BL aan/uit te zetten.

void setup() {
  // set up the LCD's number of columns and rows: 
  lcd.begin(16, 2);
  // Print a message to the LCD.
  lcd.print("hello, world!");
  pinMode(Apin, OUTPUT); 
}

void loop() {
digitalWrite(Apin, HIGH);   // turn the BL on (HIGH is the voltage level)
  delay(1000);               // wait for a second
  digitalWrite(Apin, LOW);    // turn the BL off by making the voltage LOW
  delay(1000);               // wait for a second  
}

Iedereen bedankt, vooral naaitsab door dit naar voren te brengen.
Blijft nog 1 ding over: of de A0-5 ook als pwm kunnen worden gebruikt om de lcd te kunnen dimmen met de mcu ipv met een potmeter.
Maar dat ga ik straks proberen :)

[ Voor 2% gewijzigd door kitao op 15-11-2012 08:14 . Reden: link toegevoegd ]


  • omgwtfbbq
  • Registratie: Juli 2007
  • Laatst online: 13:35
kitao schreef op donderdag 15 november 2012 @ 08:08:
Mogge,
Het werkt inderdaad om op de uno alle A0-5 pinnen als output te gebruiken.
Dit is het uiteindelijke schema om het BackLight aan te sturen :
[afbeelding]
klik
(de rest van de bedrading heb ik er niet bij getekend maar is volgens de afbeelding uit mijn vorige post)
Met als bijbehorende code :
C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// dit programma laat de lcd knipperen mbv BL (backlight)op een analoge pin
// include the library code:
#include <LiquidCrystal.h>

// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
int Apin = A5; // Analog Input pin A5 wordt gebruikt als output om BL aan/uit te zetten.

void setup() {
  // set up the LCD's number of columns and rows: 
  lcd.begin(16, 2);
  // Print a message to the LCD.
  lcd.print("hello, world!");
  pinMode(Apin, OUTPUT); 
}

void loop() {
digitalWrite(Apin, HIGH);   // turn the BL on (HIGH is the voltage level)
  delay(1000);               // wait for a second
  digitalWrite(Apin, LOW);    // turn the BL off by making the voltage LOW
  delay(1000);               // wait for a second  
}

Iedereen bedankt, vooral naaitsab door dit naar voren te brengen.
Blijft nog 1 ding over: of de A0-5 ook als pwm kunnen worden gebruikt om de lcd te kunnen dimmen met de mcu ipv met een potmeter.
Maar dat ga ik straks proberen :)
Als je een digitalOutput signaal kan maken op een analogPin (Zoals ik in je code lees) kun je natuurlijk ook een PWM signaaltje maken. Nu kun je dat natuurlijk zelf coden, maar volgens mij zijn er ook wat libraries beschikbaar die dat voor je doen :)

  • kitao
  • Registratie: Juli 2012
  • Laatst online: 05-09 16:01
Hmm, volgens mij is niet iedere pin geschikt voor pwm hoor, maar dat dacht ik ook van A0-5 dat ze niet als output konden worden gebruikt :$
Is maar 1 manier om te weten te komen : door te proberen
Je hoort het zo, dan wijzig ik deze post wel.
En die code heb ik niet zelf geschreven hoor, is gewoon knip en plakwerk

O, volgens furby hieronder gaat dat mogelijk iets langer duren, dat schijnt software-matig te moeten gebeuren.
Ik was van plan dit toe te passen : http://arduino.cc/en/Tutorial/Fade
En dan gewoon pin 9 in A5 te veranderen
Als je een digitalOutput signaal kan maken op een analogPin (Zoals ik in je code lees)
En ja, dat kan, ik zit hier met die opstelling voor me en ik garandeer je dat de tekst op de lcd gewoon knippert zoals bedoeld en met een kleine code aanpassing kan naaitsab dus een A-pin gebruiken om naar wens het backlight aan of uit te zetten waar dit draadje in feite mee begonnen is.
Dimmen wordt blijkbaar een ander verhaal, hoewel de arduino ook een 3.3V pin heeft.

[ Voor 102% gewijzigd door kitao op 15-11-2012 10:47 ]


  • Sissors
  • Registratie: Mei 2005
  • Niet online
SoftwarePWM zal mogelijk zijn op analoge pinnen, moet je er wel rekening mee houden dat software PWM eigenlijk alleen een laatste redmiddel is als je geen hardware pinnen meer hebt (beetje afhankelijk van hoe snel het moet gebeuren). Hardware PWM is veel efficienter dan software pwm. (Even googlen levert je wel software pwm lib op, en vast ook de beperkingen eraan). Software pwm moet je ook echt zo laag frequent mogelijk doen.


@Rusky, waar het kwadraatje vandaan komt zou ik je niet zomaar kunnen zeggen. Maar je hoeft (volgens mij) niet de aanhalingstekens mee te sturen. Als jij in je code 'B' schrijft, dan betekent dat voor de compiler dat hij de ASCII waarde van B daar moet invullen (dat hij die B als een character moet zien). Gezien dat jij hem al op die manier ontvangt gaat dat dus direct goed.

Dan jouw foutmelding. Die functie heeft zo te zien twee chars nodig, en een boolean. Jij geeft hem daar een complete array mee, en een array is een pointer naar een char. Dus geeft hij jouw een foutmelding dat hij niet van een char naar een char-pointer kan converteren.

  • Rusky
  • Registratie: December 2000
  • Laatst online: 29-08 12:59
furby-killer schreef op donderdag 15 november 2012 @ 08:26:
@Rusky, waar het kwadraatje vandaan komt zou ik je niet zomaar kunnen zeggen. Maar je hoeft (volgens mij) niet de aanhalingstekens mee te sturen. Als jij in je code 'B' schrijft, dan betekent dat voor de compiler dat hij de ASCII waarde van B daar moet invullen (dat hij die B als een character moet zien). Gezien dat jij hem al op die manier ontvangt gaat dat dus direct goed.
Dat gaat dus niet goed :) ik had als eerste die B aangeroepen als:
code:
1
actionSwitch.sendSignal(serialData[0], serialData[2], false);

Dus direct de B uit de array in de functie geplakt. En deze deed helemaal niks. Daarna ben ik pas met die aanhalingstekens geen lopen moeken.
Dan jouw foutmelding. Die functie heeft zo te zien twee chars nodig, en een boolean. Jij geeft hem daar een complete array mee, en een array is een pointer naar een char. Dus geeft hij jouw een foutmelding dat hij niet van een char naar een char-pointer kan converteren.
Hmmm ... dat is nu duidelijk voor me.

Ik zit niet thuis dus ik kan niet testen, maar zou dit dan gaan werken.
code:
1
 char functie = 39,serialData[2],39;

Dan krijg ik direct een char en geen array meer ...

uitleg bij arduino :
A data type that takes up 1 byte of memory that stores a character value. Character literals are written in single quotes, like this: 'A' (for multiple characters - strings - use double quotes: "ABC").
Dus kan een char ook een string zijn met meerdere karakters? (BTW als ik dit zo lees zou me eerste poging ook al goed moeten gaan, zoals furby-killer zegt :?

Ik vind de uitleg van verschillende typen een beetje verwarrend, en niet echt goed uitgelegd op de arduino website. Is hier niet een veel mooiere website (of zelfs boek) van?
Wat voor code is arduino eigenlijks of afgeleide ?

edit: code gevonden: c/c++, nu gaat ik ff naar een goed boek zoeken ...

mijn pc


  • kitao
  • Registratie: Juli 2012
  • Laatst online: 05-09 16:01
kitao schreef op donderdag 15 november 2012 @ 08:24:
Dat schijnt software-matig te moeten gebeuren.
Ik was van plan dit toe te passen : http://arduino.cc/en/Tutorial/Fade
En dan gewoon pin 9 in A5 te veranderen
Dat werkt inderdaad niet, voor geen enkele A-pin, led gaat aan/uit, maar niks te merken van een fading-effect.
Jammer, nou heeft naaitsab er nog niks aan, tenzij hij, zoals voorgesteld, googelt op software pwm lib.
Hier alvast 1 resultaat, ik laat het hierbij, software is niet mijn hobby :)
Wat voor code is arduino eigenlijks of afgeleide ?
edit: code gevonden: c/c++, nu gaat ik ff naar een goed boek zoeken ...
Op deze pagina staan een paar links waar je misschien wat aan hebt : http://www.arduino.cc/
Hij kan dan ook beter gewoon PWM pinnen voor PWM gebruiken, en analoge pinnen voor random digitale meuk.
Dat lijkt mij ook het handigste, we horen het wel.

[ Voor 56% gewijzigd door kitao op 15-11-2012 14:58 ]


  • Sissors
  • Registratie: Mei 2005
  • Niet online
kitao schreef op donderdag 15 november 2012 @ 09:03:
[...]

Dat werkt inderdaad niet, voor geen enkele A-pin, led gaat aan/uit, maar niks te merken van een fading-effect.
Jammer, nou heeft naaitsab er nog niks aan, tenzij hij, zoals voorgesteld, googelt op software pwm lib.
Hier alvast 1 resultaat, ik laat het hierbij, software is niet mijn hobby :)
Hij kan dan ook beter gewoon PWM pinnen voor PWM gebruiken, en analoge pinnen voor random digitale meuk.
Rusky schreef op donderdag 15 november 2012 @ 08:44:
[...]


Dat gaat dus niet goed :) ik had als eerste die B aangeroepen als:
code:
1
actionSwitch.sendSignal(serialData[0], serialData[2], false);

Dus direct de B uit de array in de functie geplakt. En deze deed helemaal niks. Daarna ben ik pas met die aanhalingstekens geen lopen moeken.
Dan gaat daar wat mis, gezien dat dat wel hoort te werken. Zou ik daar toch meer naar kijken.
[...]

Hmmm ... dat is nu duidelijk voor me.

Ik zit niet thuis dus ik kan niet testen, maar zou dit dan gaan werken.
code:
1
 char functie = 39,serialData[2],39;

Dan krijg ik direct een char en geen array meer ...
Dat mag niet, want daar probeer je 3 chars op de plaats van 1 char op te slaan, dat gaat je dus niet lukkn. Als je er 3 wilt hebben moet je echt een array hebben, en moet je functie daarmee overweg kunnen.
Dus kan een char ook een string zijn met meerdere karakters? (BTW als ik dit zo lees zou me eerste poging ook al goed moeten gaan, zoals furby-killer zegt :?
Chars zijn enkele karakters, char arrays zijn rijen karakters, die dus bijvoorbeeld een zin kunnen vormen. Strings zijn echt gemaakt om een zin/woord te vormen, echter kosten die een hoop meer memory (niet zozeer string zelf, maar de functies ervoor), dus gebruik je normaal gesproken een char array.


Edit: Tada je fout gevonden. Wat jij moest sturen:
actionSwitch.sendSignal(1,'B',true);

Wat jij stuurt:
actionSwitch.sendSignal(serialData[0], serialData[2], true);


Probleem is serialData[0], dat is niet gelijk aan 1, het is gelijk aan '1': Je moet een integer 1 sturen, en je stuurt het karakter 1. Ik geloof dat iets van atoi dat kan omzetten (ik ben de mbed gewend, en die heeft veel krachtigere seriele functies die het direct goed kunnen doen op de standaard c manier). De hele quick and dirty way, maak van je functie:

actionSwitch.sendSignal(serialData[0] - 48, serialData[2], true);

Waarom? In ASCII is 48 een '0'. Dus als jij een '1' doorstuurt, is dat gelijk aan 49. Trek daar 48 vanaf, en je hebt weer 1. (Uiteraard is dit niet de netste methode, maar het werkt voor simpele test het snelste).

[ Voor 16% gewijzigd door Sissors op 15-11-2012 11:08 ]


  • Rusky
  • Registratie: December 2000
  • Laatst online: 29-08 12:59
furby-killer schreef op donderdag 15 november 2012 @ 10:58:
Edit: Tada je fout gevonden. Wat jij moest sturen:
actionSwitch.sendSignal(1,'B',true);

Wat jij stuurt:
actionSwitch.sendSignal(serialData\[0], serialData\[2], true);


Probleem is serialData\[0], dat is niet gelijk aan 1, het is gelijk aan '1': Je moet een integer 1 sturen, en je stuurt het karakter 1. Ik geloof dat iets van atoi dat kan omzetten (ik ben de mbed gewend, en die heeft veel krachtigere seriele functies die het direct goed kunnen doen op de standaard c manier). De hele quick and dirty way, maak van je functie:

actionSwitch.sendSignal(serialData\[0] - 48, serialData\[2], true);

Waarom? In ASCII is 48 een '0'. Dus als jij een '1' doorstuurt, is dat gelijk aan 49. Trek daar 48 vanaf, en je hebt weer 1. (Uiteraard is dit niet de netste methode, maar het werkt voor simpele test het snelste).
Super furby-killer dat je me zo helpt. Dus ik was iets aan het "oplossen"wat gewoon goed was :P
Ga eens naar atoi() kijken

code:
1
2
int systemCode;
systemCode = atoi(serialData);


Dit was hem :-)

Hele code:
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
#include <RemoteSwitch.h>

ActionSwitch actionSwitch(11);
char serialData[4];
int systemCode;

void setup() {
  Serial.begin(9600);
}

void loop() {
     if (Serial.available() > 0) { 
       Serial.readBytesUntil('\n', serialData, 3);
       
       systemCode = atoi(serialData);
       
       switch (serialData[2]) {
         case 't':
           actionSwitch.sendSignal(systemCode, serialData[1], true);
           break;
         case 'f':
           actionSwitch.sendSignal(systemCode, serialData[1], false);
           break;
       }
     }
   }

[ Voor 26% gewijzigd door Rusky op 15-11-2012 20:00 ]

mijn pc


  • naaitsab
  • Registratie: Augustus 2005
  • Laatst online: 21:26
kitao schreef op donderdag 15 november 2012 @ 08:08:
Mogge,
Het werkt inderdaad om op de uno alle A0-5 pinnen als output te gebruiken.

Iedereen bedankt, vooral naaitsab door dit naar voren te brengen.
Blijft nog 1 ding over: of de A0-5 ook als pwm kunnen worden gebruikt om de lcd te kunnen dimmen met de mcu ipv met een potmeter.
Maar dat ga ik straks proberen :)
Dat werkt in ieder geval prima als schakelaar voor backlight.
Kan ik wat pinnetjes van het relais shield naar de analoge pins verplaatsen en een hardware PWM pin proberen te gebruiken voor een "dimbaar" backlight.

if (!coffee) {
Work = false; }


  • Mattie112
  • Registratie: Januari 2007
  • Laatst online: 16:32
Voor de liefhebber:
http://dambot.mattie-systems.nl/index.php/Hoofdpagina

We hebben even een wiki opgezet voor ons project. De bedoeling is dat daar alle info op komt te staan ;p

3780wP (18x 210wP EC Solar) | 2x Marstek Venus E (5.12kWh)


  • kitao
  • Registratie: Juli 2012
  • Laatst online: 05-09 16:01
Leuk logo Mattie d:)b

Afbeeldingslocatie: http://i.imgur.com/ZxqvVl.png

Maar er staat verder nog niks in die wiki ?
O ja, zet die pagina als subscript in je post, dan kan ik af en toe meekijken.
==============
naaitsab schreef op donderdag 15 november 2012 @ 12:18:
Nu kan ik wat pinnetjes van het relais shield naar de analoge pins verplaatsen en een hardware PWM pin proberen te gebruiken voor een "dimbaar" backlight.
Ok, succes ermee, ik heb er net zoveel van opgestoken als jij.
Bedankt voor je terugmelding.
Ik heb het zelf ook even geprobeerd en alles werkt naar behoren :
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
/*
 Dim BackLight 
 This example shows how to set the intensity of a BackLight BL on pin 9
 using the analogWrite() function. 
 This example code is in the public domain.
 */
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
int BL = 9;           // the pin that the BL is attached to
int brightness = 10;  
// how bright the BL is, verander deze waarde om te dimmen
//die waarde moet tussen 0 en 255 liggen

// the setup routine runs once when you press reset:
void setup()  { 
   // set up the LCD's number of columns and rows: 
  lcd.begin(16, 2);
  // Print a message to the LCD.
  lcd.print("hello, world!");
  // declare pin 9 to be an output for the BL:
  pinMode(BL, OUTPUT);
} 

// the loop routine runs over and over again forever:
void loop()  { 
  // set the brightness of pin 9 :
  analogWrite(BL, brightness);  
                            
}

Door de waarde van brightness te veranderen regel je de sterkte van het licht. Voor jou zal er meer bij komen kijken omdat je dat op bepaalde tijden wilt laten veranderen door het programma zelf.
O ja, misschien kun je meteen dit vraagje beantwoorden : ik was van de week bezig met een basicstamp, ook met een lcd toevallig en daarover staat :
Displaying Time Elapsed
The next example program applies this concept with just the BASIC Stamp module's
timing abilities. The accuracy isn't digital wristwatch quality by a long shot; however, it
is good enough for showing how the time display can work with character positioning.
For higher accuracy, try incorporating the DS1302 timekeeping chip.

http://www.parallax.com/P...rintSmartSensors-v1.0.pdf
pag.17
Hoe zit het met de interne klok van de uno, is deze ook zo onnauwkeurig ?
ik ben bezig zelf te zoeken maar valt niet mee, ik zit ineens verstrengeld in allerlei library-protocollen

[ Voor 77% gewijzigd door kitao op 15-11-2012 18:30 . Reden: afb. aangepast ]


  • almightyarjen
  • Registratie: Maart 2002
  • Laatst online: 21:42

almightyarjen

When does the hurting stop?

Ik heb ff jullie hulp nodig... Ik heb hier een stukje code, deels in AVR:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
// Read using the registers, as this is faster
void firstEncoder() { 
    #if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)
    if((bool)(PINE & _BV(4)) == (bool)(PINE & _BV(3))) // pin 2 == pin 5 - See http://arduino.cc/en/Hacking/PinMapping2560
        _firstTachPos++;
    else
        _firstTachPos--;
    #else
    if((bool)(PIND & _BV(2)) == (bool)(PIND & _BV(5))) // pin 2 == pin 5 - See http://arduino.cc/en/Hacking/PinMapping168
        _firstTachPos++;
    else
        _firstTachPos--;
    #endif

Kan iemand mij uitleggen wat hier nou precies gebeurd? Ik snap waarom er AVR code wordt gebruikt maar ik volg het niet helemaal. Ik begrijp dat de waarden van twee pinnen met elkaar worden vergeleken (heeft iets te doen met welke chip er gebruikt wordt?). Het volgende begrijp ik niet:
- #if --> waarom dat hekje ervoor?
- wat houdt (bool) precies in?
- wat doet dit stukje code precies? :?

Patreon | Main Youtube | Work In Progress Youtube


  • Sissors
  • Registratie: Mei 2005
  • Niet online
Hoe zit het met de interne klok van de uno, is deze ook zo onnauwkeurig ?
Niet nauwkeurig genoeg om langere tijd de tijd bij te houden nee. Daarvoor heb je een RTC nodig (real time clock), of een radio-clock module.

@almighty, Ik weet dat het veel zo gemaakt wordt, maar ik gebruik die stijl van coding zelf niet dus vind het altijd irritant :P

Maar je vragen, de #'jes zijn compiler statements. Die moeten dus door de compiler worden bedacht. In dit geval kijkt hij dus wat voor een type atmega er wordt gebruikt.

(bool) betekend simpelweg dat het stuk daarna naar een bool(ean) moet worden geconverteerd.

Ik pak dan even de onderste helft, andere is hetzelfde maar voor andere atmega (dan ook gecopy-paste waarbij ze het commentaar niet hebben aangepast).

code:
1
PIND & _BV(2))

PIND is input pakken van poort D van de atmega._BV(2) is (voglens mij) hetzelfde als (1<<2): 7 nullen, en een 1 op positie 2 (geteld inclusief nul). Als je een bitwise AND doet met zeven nullen is het op die plaats altijd nul, en op plaats 2 hangt het dus ervan af wat er met PIND daar is ingelezen: als daar een één was is het een één, was het een nul dan is het een nul.

Vervolgens converteerd (bool) het naar een true/false: als het geheel nul is dan is hij false, is hij ongelijk aan nul dan is het true (oftewel als pin 2 van poort D hoog is, dan is het resultaat true, anders false). Je doet nog een keer hetzelfde maar dan niet met positie 2, maar positie 5. Dus nu heb je effectief pin 2 en pin 5 van poort D ingelezen. Als die gelijk zijn aan elkaar moet hij zijn positie blijkbaar verhogen, anders verlagen.

Acties:
  • 0 Henk 'm!

  • almightyarjen
  • Registratie: Maart 2002
  • Laatst online: 21:42

almightyarjen

When does the hurting stop?

Thanks Furby! Die _BV had ik inmiddels ook gevonden. Ik begrijp nu in grote lijnen wat het doet, al snap ik nog niet helemaal waarom hij pin 2 met pin 5 moet vergelijken. Dit zal wel te maken hebben met de portmapping en dat je deze code op elke arduino kan draaien...

Patreon | Main Youtube | Work In Progress Youtube


Acties:
  • 0 Henk 'm!

  • 571Pro
  • Registratie: November 2006
  • Laatst online: 14-08 16:10
Ben zelf nieuw met Arduino...

Maar ik heb al een basis sketch geprobeerd wat lukte... Maar nu echter waarvoor ik de arduino kocht is met het Can Bus Shield te kunnen werken.

Eerst heb ik geprobeerd op Mac OS maar ben direct overgegaan naar windows, hier werkt wel alles fijner. Maar ik krijg de bibliotheken niet zoals ze moeten.

Het is een Arduino Uno rev3 SMD samen met Can Bus Shield van SKpang/Sparkfun.


Ik open Canbus interface v1.2, voeg SD bib toe, canbus bib toe en dan krijg ik de fout er sLCD niet in zit...

Heeft iemand hier raad mee?

De bedoeling zou in eerste plaats zijn er om de 100ms op 100kb/s canbus er een 2 codes gestuurd worden op de canbus door de arduino.

Acties:
  • 0 Henk 'm!

  • kitao
  • Registratie: Juli 2012
  • Laatst online: 05-09 16:01
571Pro schreef op vrijdag 16 november 2012 @ 03:59:
Ben zelf nieuw met Arduino...
Maar ik heb al een basis sketch geprobeerd wat lukte... Maar nu echter waarvoor ik de arduino kocht is met het Can Bus Shield te kunnen werken.
Maar ik krijg de bibliotheken niet zoals ze moeten.
Mogge Pro en andere lezers,
Toevallig ben ik gisteren ook pas begonnen met libraries, zie mijn zelfquote hieronder, en eerlijk gezegd, ik vind het een puinhoop.
kitao schreef op donderdag 15 november 2012 @ 14:57:
Hoe zit het met de interne klok van de uno, is deze ook zo onnauwkeurig ?
Ik ben bezig zelf te zoeken maar valt niet mee, ik zit ineens verstrengeld in allerlei library-protocollen
Letterlijk uren bezig geweest. }:|
Maar goed, nu net heb ik er eindelijk 1 gevonden die wel werkt. Ook kun je niet zomaar iedere library downloaden om te testen want als je bijv. een stepper-lib hebt maar geen steppermotor, dan kun je dat toch niet uitproberen.
Deze heb ik nu erin staan want ik had al een aangesloten lcd en dit geeft heel leuke effecten.
http://arduino.cc/playground/Code/LCDBitmap
Nu kan ik je niet helpen met die canbus (nooit van gehoord zelfs) maar misschien als je nog moeite hebt met die libs te downloaden en om die in je sketch te krijgen dan weet ik nu wel hoe dat moet geloof ik.
Dan kun je wel beter je vraag opnieuw formuleren wat er nu precies fout gaat als dit het geval is.

Edit4: Onderstaand is al opgelost, zie einde post en de volgende post :
Bijvoorbeeld, deze lib werkt bij mij ook niet : http://www.arduino.cc/playground/Code/TimedAction
Dan krijg ik dit in beeld :
Afbeeldingslocatie: http://s10.postimage.org/lxumuqg3p/img66.jpg
klik, en dmv zoom te vergroten beter leesbaar
Kan iemand zo vriendelijk zijn dit ook te proberen of aan de hand van de afbeelding misschien kunnen uitleggen waar het nu mis gaat ?
Alvast bedankt en ik vermeld erbij dat het een lib is uit 2009 maar bijgewerkt in juli 2011.
Zoals op de afb. te zien is heb ik een arduino versie 1.0.1
edit :
furby-killer schreef op donderdag 15 november 2012 @ 23:57:
Niet nauwkeurig genoeg om langere tijd de tijd bij te houden nee. Daarvoor heb je een RTC nodig (real time clock), of een radio-clock module.
Tnx, daar begon het mee, ik wilde kijken of ik een soort van klok in de arduino kon zetten en kwam toen uit bij de libraries. Dat was niet echt helemaal een succes.
edit 2:
Hier een mooi antwoord van een administrator :
Yeah, Arduino 1.0 basically breaks most libraries.
:/
edit3:
Mijn vraag over die error kan verwijderd worden, is inmiddels opgelost dmv :
in the lib change #include "WProgram.h" to #include "Arduino.h"
Gevonden op dit o zo vriendelijke forum maar niet heus :
http://arduino.cc/forum/i...n=printpage;topic=94710.0
Grandioos al die vastlopende software ;(

[ Voor 18% gewijzigd door kitao op 16-11-2012 09:27 . Reden: spelfout ]


Acties:
  • 0 Henk 'm!

  • Sissors
  • Registratie: Mei 2005
  • Niet online
99% van de libraries kan je weer fixen door in de library de include WProgram.h te vervangen door include Arduino.h. (Ik vind het ook nogal apart dat ze zon switch hebben gemaakt ipv gewoon de naam gelijk te houden).


Edit: die had je al gevonden dus (had het antwoord al eventjes staan maar was nog vergeten verstuur te drukken)

[ Voor 21% gewijzigd door Sissors op 16-11-2012 08:28 ]


Acties:
  • 0 Henk 'm!

  • kitao
  • Registratie: Juli 2012
  • Laatst online: 05-09 16:01
Laten we hopen dat Pro er ook iets aan heeft, ik zal even mijn vorige post wijzigen zodat het meteen al duidelijker is dat er al een oplossing is.
Tnx, we weten nu ook dat dit heel vaak te verwachten valt en nog een andere tip, over de libs werd als uitleg vaak vermeld dat de .h - en de .cpp-files als tekstdocument kunnen worden opgeslagen in een zelf te maken library map. (niet alle libs zijn makkelijk te downloaden zip-files)
Dit schijnt echter minder goed te werken met words vanwege de opmaak, notepad is daar beter geschikt voor zo werd beweerd.
Ik heb deze gedownload hoewel de standaard notepad waarschijnlijk al voldoende is :
http://notepad-plus-plus.org/

[ Voor 63% gewijzigd door kitao op 16-11-2012 09:55 . Reden: toevoeging ]


Acties:
  • 0 Henk 'm!

  • mcDavid
  • Registratie: April 2008
  • Laatst online: 09-09 17:48
furby-killer schreef op vrijdag 16 november 2012 @ 08:27:
99% van de libraries kan je weer fixen door in de library de include WProgram.h te vervangen door include Arduino.h. (Ik vind het ook nogal apart dat ze zon switch hebben gemaakt ipv gewoon de naam gelijk te houden).


Edit: die had je al gevonden dus (had het antwoord al eventjes staan maar was nog vergeten verstuur te drukken)
Kun je niet gewoon een symlink naar Arduino.h maken?

Overigens ben ik nog geen libraries tegengekomen die niet Arduino 1.0 proof zijn. Voor mijn klok heb ik deze library gebruikt: https://github.com/adafruit/RTClib deze heeft ook een "softrtc" functie, waarmee de arduino als een soort poormans RTC gebruikt wordt. De nadelen zijn natuurlijk te raden: stroom eraf = tijd weg, en na ca. 50 dagen overflowt de millis() functie, dus niet geschikt voor long-term oplossingen.
De klok is verder natuurlijk zo nauwkeurig als het kristal. Dat geldt altijd, voor iedere klok.

@kitao
komt die foutmelding niet doordat windows over de zeik gaat over die forward-slash?

[ Voor 4% gewijzigd door mcDavid op 16-11-2012 09:58 ]


Acties:
  • 0 Henk 'm!

  • kitao
  • Registratie: Juli 2012
  • Laatst online: 05-09 16:01
Bedoel je deze > mcDavid ?
#include<TimedAction.h>
Geen idee, maar in dat forum waar ik naar verwees en volgens furby zit het echt in dat WProgram.h dat vervangen moet worden door Arduino.h en dat heb ik gedaan en alles ging plotsklaps naar behoren.
Gisternacht zag ik het allemaal niet zo scherp meer en ik ben geen kei in files en directories en in software al helemaal niet, ik vind dat eerder een noodzakelijk kwaad dat het plezier in mijn hobby vermindert.
Want dit was echt niet het enige programma wat ik probeerde, deze werkte ook al voor geen meter :
http://www.arduino.cc/en/Hacking/LibraryTutorial
Daar staat overigens wel Arduino.h dus misschien heb ik daar een andere valkuil over het hoofd gezien, ik zal het nog eens proberen.
En bedankt voor je RTClib link :)

edit:
Ok, net geprobeerd, inderdaad een andere valkuil :-(
Na het verslepen komt meteen deze melding :
Afbeeldingslocatie: http://s11.postimage.org/3rw4tbjrj/img67.jpg

[ Voor 12% gewijzigd door kitao op 16-11-2012 10:23 ]


Acties:
  • 0 Henk 'm!

  • almightyarjen
  • Registratie: Maart 2002
  • Laatst online: 21:42

almightyarjen

When does the hurting stop?

Kitao, als je goed naar de foutmelding kijkt, dan kan je er uithalen dat er een probleem zit met WProgram.h:

C:\...\libraries\TimedAdction\TimedAction.h:33:22: error: WProgram.h:: No such file or directory

Die 33:22 zijn volgens mij regelnummers waar de error ontstaat (waar dus wordt verwezen naar WProgram.h), waar TimedAction.h dus verwijst naar WProgram.h, welke niet bestaat...

En wat betreft je laatste foutmelding over file encyption: dat lijkt me meer iets van Windows dan een Arduino specifiek probleem. Heb je hier wat aan?
http://windows.microsoft....-decrypt-a-folder-or-file

Patreon | Main Youtube | Work In Progress Youtube


Acties:
  • 0 Henk 'm!

  • kitao
  • Registratie: Juli 2012
  • Laatst online: 05-09 16:01
Bedankt voor de tip Arjen, nu begrijp ik de foutmeldingen wel beter.
Het kopieren van de file Morse heb ik gewoon 'Ja, zonder encryptie" ingedrukt en is die daar toch gekomen.
Bij het laden van het programma in de uno wederom dezelfde foutmelding WProgram.h en .cpp.
Beide bestandjes geopend met notepad++ en WP veranderd in Arduino.
Nu knippert het ledje SOS.
Je kan je misschien voorstellen dat als je zulk soort dingen voor het eerst tegenkomt dat je dan niet blij wordt, maar het geeft ook wel weer voldoening dat het toch opgelost is, ook dankzij jullie hulp natuurlijk.
En jouw link komt altijd van pas natuurlijk hoewel in dit geval er bij properties op Morse geen Advanced-knopje zit.

Acties:
  • 0 Henk 'm!

  • almightyarjen
  • Registratie: Maart 2002
  • Laatst online: 21:42

almightyarjen

When does the hurting stop?

kitao schreef op vrijdag 16 november 2012 @ 11:48:
Bedankt voor de tip Arjen, nu begrijp ik de foutmeldingen wel beter.
Het kopieren van de file Morse heb ik gewoon 'Ja, zonder encryptie" ingedrukt en is die daar toch gekomen.
Bij het laden van het programma in de uno wederom dezelfde foutmelding WProgram.h en .cpp.
Beide bestandjes geopend met notepad++ en WP veranderd in Arduino.
Nu knippert het ledje SOS.
Je kan je misschien voorstellen dat als je zulk soort dingen voor het eerst tegenkomt dat je dan niet blij wordt, maar het geeft ook wel weer voldoening dat het toch opgelost is, ook dankzij jullie hulp natuurlijk.
En jouw link komt altijd van pas natuurlijk hoewel in dit geval er bij properties op Morse geen Advanced-knopje zit.
Het was voor mij ook een wilde gok :P

Ik heb een shield voor lego NXT motoren gekocht: http://shop.tkjelectronic...t_info.php?products_id=29. NXT motoren hebben rotary encoders in zich, soort stepper motoren dus. Ik gebruik de shield niet als shield, maar ik verbind hem handmatig met de Arduino. 1 op 1 verbonden met een Arduino Duemilanove werkte perfect, maar nu heb ik hem verbonden met een Arduino Mega (waar hij uiteindelijk mee moet werken) en nu werkt de stepperfunctie niet meer en ik heb echt geen idee waar ik het moet zoeken :'(

Ja, te weinig info voor jullie om mij te kunnen helpen, het was meer om mijn hart te luchten :')

Patreon | Main Youtube | Work In Progress Youtube


Acties:
  • 0 Henk 'm!

  • kitao
  • Registratie: Juli 2012
  • Laatst online: 05-09 16:01
Als eerste zou ik proberen om die weer werkend te krijgen op de Duemilanove ?
Pagina: 1 ... 20 ... 96 Laatste