Acties:
  • 0 Henk 'm!

  • kitao
  • Registratie: Juli 2012
  • Laatst online: 05-09 16:01
Mr_gadget schreef op vrijdag 23 november 2012 @ 11:09:
Sparkfun.com heeft maandag ook geen verzendkosten! Dus als je Paypal / creditcard hebt kan dat ook interessant zijn.
Aliexpress gaat morgen ook uit zn dak.

Acties:
  • 0 Henk 'm!

  • F.West98
  • Registratie: Juni 2009
  • Laatst online: 02:23

F.West98

Alweer 16 jaar hier

Topicstarter
Vandaag dus bezig geweest met die robotjes.
Het was een kant-en-klaar bouwpakket met een handleiding van 130 pagina's met allemaal codevoorbeelden. Veel werk was het dus niet.

Gebaseerd op een Arduino Mini, en dan met een heleboel randapparatuur (schermpje met Serial ingang, knoppen, IR-sensor, enz.)
Dit samen is inmiddels een robotje geworden, nog 9 dagen om te perfectioneren.
Enkele features (en een filmpje):
• Minder dan 8cm afstand van een object, terug en draaien
• Druk op één vd knoppen aan de zijkant, terug en draaien
• Info op een schermpje
• Een Zwarte lijn volgen

Twee filmpjes:
Niet botsen!
[YouTube: http://www.youtube.com/watch?v=rLVv_FZVi2w]

Volg de lijn:
[YouTube: http://www.youtube.com/watch?v=ne0CPBD8_JA&feature=plcp]

Al met al 6-10 uur werk

2x Dell UP2716D | R9 7950X | 128GB RAM | 980 Pro 2TB x2 | RTX2070 Super
.oisyn: Windows is net zo slecht in commandline als Linux in GUI


Acties:
  • 0 Henk 'm!

  • almightyarjen
  • Registratie: Maart 2002
  • Laatst online: 22:38

almightyarjen

When does the hurting stop?

cool :D Dat kast-probleem kan je verhelpen door een paar distance sensoren aan de zijkanten te plaatsen en op basis van die informatie bepaalt de robot of hij die kant kan op draaien of niet...

Patreon | Main Youtube | Work In Progress Youtube


Acties:
  • 0 Henk 'm!

  • kitao
  • Registratie: Juli 2012
  • Laatst online: 05-09 16:01
Zeker cool d:)b

Jammer alleen dat er geen linkje is naar de gebruikte kit. :/

Acties:
  • 0 Henk 'm!

  • Mattie112
  • Registratie: Januari 2007
  • Laatst online: 12-09 16:32
Pft ik heb weer is een probleem....

Ik probeer de intensiteit van het backlight van mn LCD te controleren met analogwrite maar het werkt niet ;)

(deel van) mn code:

C++:
1
2
3
int backlightpin = 9;
pinMode(backlightpin, OUTPUT);
analogWrite(backlightpin, 128);


Maar of ik nou 0, 180, 255, 1337 of wat dan ook doe ik zie geen verschil. Zodra ik de waarde change zie ik hem 1x heel snel "kipperen" (even fel en dan weer gedimt) maar verder niets.

Ik heb het idee dat hij het wel veranderd maar na een paar milisec weer terugzet naar 0 oid. Iemand enig idee waar het aan zou kunnen liggen :p

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


Acties:
  • 0 Henk 'm!

  • naaitsab
  • Registratie: Augustus 2005
  • Laatst online: 21:26
Heb je wel de PWM poort gepakt? De standaard poort pakt volgens mij enkel LOW of HIGH (0 en 5v aka aan of uit) als waarde.

if (!coffee) {
Work = false; }


Acties:
  • 0 Henk 'm!

  • Demo
  • Registratie: Juni 2000
  • Laatst online: 12-09 15:27

Demo

Probleemschietende Tovenaar

Pin 9 is PWM. Desalniettemin zou een andere pin geen kwaad kunnen, mits beschikbaar. En wat gebeurt er als je alleen deze code in de Arduino laadt?

Unix doesn't prevent a user from doing stupid things, because that would necessarily prevent them from doing brilliant things.
while true ; do echo -n "bla" ; sleep 1 ; done


Acties:
  • 0 Henk 'm!

  • kitao
  • Registratie: Juli 2012
  • Laatst online: 05-09 16:01
Dit werkt prima bij mij :
code:
1
2
3
4
5
6
7
int ledPin = 9;    // LED connected to digital pin 9
int fadeValue = 200;  // Verander dit getal naar gewenste sterkte.
void setup()  { 
} 
void loop()  { 
    analogWrite(ledPin, fadeValue);     
}

Acties:
  • 0 Henk 'm!

  • Mattie112
  • Registratie: Januari 2007
  • Laatst online: 12-09 16:32
Hmjaok het zou gewoon moeten werken. In dat geval zal ik het zo eerst ff met een LED testen miss dat er wat in het LCD scherm zit wat het voltage gelijktrekt ofzo

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
Het werkt.

Acties:
  • 0 Henk 'm!

  • Mattie112
  • Registratie: Januari 2007
  • Laatst online: 12-09 16:32
Ik bedoel ja mijn code zou moeten werken :p

Maargoed alleen even een paar regeltjes om het te changen en dat werkt pft ik ga maar even mn code doorspitten maar volgesmij staat er echt niks vreemds in....

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
Wat mij opvalt is dat regel 2 in jouw code, in 'mijn' code totaal niet wordt toegepast.
De code heb ik hier vandaan. ;)
Probeer die eens weg te laten ?

Acties:
  • 0 Henk 'm!

  • Mattie112
  • Registratie: Januari 2007
  • Laatst online: 12-09 16:32
pft ik heb het al gevonden |:(

stiekem stond ergens in mn code nog "servo.attach(9)"... ja ach dan gaat het niet helemaal werken én een servo én een "led" naja thx in elk geval :p Hier heb ik me dus echt een uur op blind zitten staren.... tijd om alle PIN nummertjes in een losse headerfile te zetten.

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


Acties:
  • 0 Henk 'm!

  • F.West98
  • Registratie: Juni 2009
  • Laatst online: 02:23

F.West98

Alweer 16 jaar hier

Topicstarter
almightyarjen schreef op woensdag 28 november 2012 @ 11:34:
cool :D Dat kast-probleem kan je verhelpen door een paar distance sensoren aan de zijkanten te plaatsen en op basis van die informatie bepaalt de robot of hij die kant kan op draaien of niet...
Ja dat wil ik ook doen, lage objecten herkent 'ie ook niet, maar die zitten er niet bij :P
Ik denk dat ik 'm op de servomotor zet, meegeleverd. Dan kan 'ie rondkijken. (maar niet snel)

Linkje:
http://www.inexglobal.com/products.php?model=popbot

2x Dell UP2716D | R9 7950X | 128GB RAM | 980 Pro 2TB x2 | RTX2070 Super
.oisyn: Windows is net zo slecht in commandline als Linux in GUI


Acties:
  • 0 Henk 'm!

  • kitao
  • Registratie: Juli 2012
  • Laatst online: 05-09 16:01
Gave site F.West, wel een beetje uit de buurt.
Ik heb even zitten kijken hier, maar zie nergens een prijslijst en wil me nog niet registreren daar.
Heb jij de popbot rechtstreeks via hun besteld als ik vragen mag ?

edit:
Inmiddels de max7221 en 2x 4-digit displays binnen gekregen om hier verder te gaan : :)
Arduino - eigen klok maken

Enige wat nog ontbreekt is de RTC, (real time clock) maar ik kan alvast wat oefenen met een teller ofzo.
Ik snap alleen niet waarom Conrad die onderdelen niet netjes op een kussentje prikt, alsof t niks kost. }:|

[ Voor 51% gewijzigd door kitao op 28-11-2012 17:14 ]


Acties:
  • 0 Henk 'm!

  • F.West98
  • Registratie: Juni 2009
  • Laatst online: 02:23

F.West98

Alweer 16 jaar hier

Topicstarter
Nee, ik heb dat ding van de RuG gekregen voor een schoolproject (daarvoor moesten we daar naartoe).

2x Dell UP2716D | R9 7950X | 128GB RAM | 980 Pro 2TB x2 | RTX2070 Super
.oisyn: Windows is net zo slecht in commandline als Linux in GUI


Acties:
  • 0 Henk 'm!

  • almightyarjen
  • Registratie: Maart 2002
  • Laatst online: 22:38

almightyarjen

When does the hurting stop?

F.West98 schreef op woensdag 28 november 2012 @ 16:00:
[...]

Ja dat wil ik ook doen, lage objecten herkent 'ie ook niet, maar die zitten er niet bij :P
Ik denk dat ik 'm op de servomotor zet, meegeleverd. Dan kan 'ie rondkijken. (maar niet snel)
Als je het dan helemaal gaaf wilt maken, dan laat je hem rondkijken waar de meeste ruimte is om naar toe te rijden en vervolgens draait hij z'n chassis in die richting, maar houdt de servomotor de hele tijd in die richting. Zoals een tank zijn loop op een doel houdt terwijl hij draait, geniaal :D

Patreon | Main Youtube | Work In Progress Youtube


Acties:
  • 0 Henk 'm!

  • reddo
  • Registratie: Oktober 2010
  • Laatst online: 10-09 15:21
Ik heb hier een prog met ethernet shield (w5100) op een uno draaien al enige tijd en nu wil ik datzelfde op een Mega2560 draaien maar dat werkt niet helemaal... iemand die me op weg kan helpen wat aan te passen ? Upload elke 5 minuten waarden naar pvoutput.org en logt iedere minuut naar SD...


Edit : Opgelost, nieuwe versie van MsTimer2 en nu logt ie weer netjes !

[ Voor 11% gewijzigd door reddo op 02-12-2012 22:01 ]

http://www.pvoutput.org/intraday.jsp?id=13642&sid=11522


Acties:
  • 0 Henk 'm!

  • F.West98
  • Registratie: Juni 2009
  • Laatst online: 02:23

F.West98

Alweer 16 jaar hier

Topicstarter
almightyarjen schreef op woensdag 28 november 2012 @ 17:14:
[...]

Als je het dan helemaal gaaf wilt maken, dan laat je hem rondkijken waar de meeste ruimte is om naar toe te rijden en vervolgens draait hij z'n chassis in die richting, maar houdt de servomotor de hele tijd in die richting. Zoals een tank zijn loop op een doel houdt terwijl hij draait, geniaal :D
Kost me teveel code :P
En dat maakt hem weer wat traag, de afstandmeter is al traag. Er komen nog genoeg andere dingen bij overigens

2x Dell UP2716D | R9 7950X | 128GB RAM | 980 Pro 2TB x2 | RTX2070 Super
.oisyn: Windows is net zo slecht in commandline als Linux in GUI


Acties:
  • 0 Henk 'm!

  • Dizzy01
  • Registratie: November 2011
  • Laatst online: 11-05 20:31
Hallo medeTweakers!

Ik wil gaan beginnen met arduino, zou iemand mij kunnen uitleggen/ vertellen wat ik hier allemaal voor nodig heb? ik beschik over genoeg led lampjes schakelaartjes ect.
onder welke taal moet het script worden geschreven?


Groetjes Dizzy

Acties:
  • 0 Henk 'm!

  • kitao
  • Registratie: Juli 2012
  • Laatst online: 05-09 16:01
Hi Dizzy01,
Het enige wat je dan nog nodig hebt is een leverancier die jou een arduino-bordje kan leveren en een usb-kabeltje.
Verder zijn er diverse arduino's zoals uno, mega, tiny, leonardo, etc en de progtaal is c of c++ heb ik begrepen.
Dit is bijvoorbeeld een leverancier en de hoofdpagina van arduino :
http://www.antratek.nl/Arduino.html
http://www.arduino.cc/
Lees dat eens door en kijk welk type jij wil gaan gebruiken.

Acties:
  • 0 Henk 'm!

  • sopsop
  • Registratie: Januari 2002
  • Laatst online: 12-09 14:36

sopsop

[v] [;,,;] [v]

Ik heb deze besteld. Hij was afgelopen zaterdag al binnen en ik kan je melden dat het een zeer uitgebreide set is. Ik heb er ook wat extra breadboard jumper cables bijbesteld, dat is wel een aanrader.

Verder nog niet heel veel mee gedaan. Eerste projectje was een knightrider looplicht, met een instelbare snelheid (door de variabele weerstand) en een 7 segment display die aangeeft welke led er brand.

"Superstoer", aldus mijn dochter, die nu denkt dat ik geniaal ben _/-\o_

Vijf minuten later vroeg ze wat je hier eigenlijk aan had...

[ Voor 5% gewijzigd door sopsop op 03-12-2012 10:23 ]


Acties:
  • 0 Henk 'm!

  • Dizzy01
  • Registratie: November 2011
  • Laatst online: 11-05 20:31
Oh Nice! Ik heb deze ook gisteravond besteld. Ik ga zo even extra breadboard jumper cables bestellen.

THX allemaal

Acties:
  • 0 Henk 'm!

  • kitao
  • Registratie: Juli 2012
  • Laatst online: 05-09 16:01
Hier kan je 500 jumpers van maken van 20 cm.
Nadeel, 1 kleur.
http://www.eleshop.nl/breadboard-draad-rood-100m-p-230.html
Maar ik heb nu iets van 100 draden op een breadboard zitten en dan maakt de kleur ook nog maar weinig uit. Ik kon enkel blij zijn dat ik nog draad had liggen want de jumpers waren allang op.
Afbeeldingslocatie: http://s17.postimage.org/7g8s4b723/IMG_0298.jpg

Acties:
  • 0 Henk 'm!

  • almightyarjen
  • Registratie: Maart 2002
  • Laatst online: 22:38

almightyarjen

When does the hurting stop?

Ik heb een NXT motor van Lego die ik aanstuur via een microcontroller (ATmega (arduino)). In deze motor zit een rotary encoder en zorgt voor een interrupt bij elke puls (één puls per graad). Het probleem met die motor is dat die door de bewegende massa nog een stukje doordraait zodra hij het stopcommando heeft gekregen. Ik ben dit probleem aan het oplossen en had het volgende bedacht:
1. linksom draaien voor x graden
2. bij x graden stopcommando
3. heel kort rechtsom commando geven (extra remkracht)
4. eindpositie opzoeken dmv de PWM op te voeren en zodra de as begint te draaien de PWM stabiel houden totdat de eindpositie is bereikt.

Tot en met punt 3 werkt het goed, al draait de motor nog te ver door. Het probleem waar ik tegenaan loop is dat de code de hele tijd wordt verstoord omdat er de hele tijd interrupts binnenkomen omdat de motor nog uitdraait. Interrupts kan ik niet tijdelijk uitzetten, dan mis je pulsen en weet je niet wat de exacte positie is. Ik heb al het één en ander geprobeerd om met booleans de situatie aan te geven e.d., maar ik krijg het niet werkend. Heeft iemand nog een gouden tip hoe ik dit kan oplossen?

edit: Sjeez Kitao, wat een dradenbende :D

Patreon | Main Youtube | Work In Progress Youtube


Acties:
  • 0 Henk 'm!

Verwijderd

Ik heb een probleem met mijn arduino nano,

als ik een programma upload naar de arduino dan krijg ik geen foutmeldingen. gewoon done uploading.

Op de arduino knippert tijdens het uploaden de RX led 3 keer, en daarna gebeurt er niks meer. Het programma wat ik upload naar de nano wordt ook niet uitgevoerd.

Het is een nieuwe arduino die ik nog nooit eerder heb gebruikt. Arduino uno's die ik heb werken wel gewoon.

serial port en board zijn goed ingesteld. Alleen in de device manager staat er bij de nano: USB serial port (COM 4) terwijl er bij een uno echt arduino staat.

Heeft iemand ervaring met arduino nano's?

Acties:
  • 0 Henk 'm!

  • mcDavid
  • Registratie: April 2008
  • Laatst online: 09-09 17:48
Een nano heeft een andere USB-to-Serial chip, dus dat'ie een andere naam heeft kan goed kloppen. Heb je ook het goeie board geselecteerd in je arduino IDE?

Wat je anders nog zou kunnen doen is de bootloader flashen. Dan weet je zeker dat die goed is.
Hier staat uitgelegd hoe dat moet: http://arduino.cc/en/Tutorial/ArduinoISP

-edit-
weet je zeker dat het niet de pin 13 led is die 3x knippert? Die hoort namelijk 3x te knipperen na een reset.

-edit2-
en probeer altijd eerst een keer gewoon het standaard blink-programma'tje te uploaden en kijk of dat wel goed gaat.

[ Voor 27% gewijzigd door mcDavid op 03-12-2012 12:54 ]


Acties:
  • 0 Henk 'm!

  • Mr_gadget
  • Registratie: Juni 2004
  • Laatst online: 21:32

Mr_gadget

C8H10N4O2 powered

almightyarjen schreef op maandag 03 december 2012 @ 11:51:
Ik heb een NXT motor van Lego die ik aanstuur via een microcontroller (ATmega (arduino)). In deze motor zit een rotary encoder en zorgt voor een interrupt bij elke puls (één puls per graad). Het probleem met die motor is dat die door de bewegende massa nog een stukje doordraait zodra hij het stopcommando heeft gekregen. Ik ben dit probleem aan het oplossen en had het volgende bedacht:
1. linksom draaien voor x graden
2. bij x graden stopcommando
3. heel kort rechtsom commando geven (extra remkracht)
4. eindpositie opzoeken dmv de PWM op te voeren en zodra de as begint te draaien de PWM stabiel houden totdat de eindpositie is bereikt.

Tot en met punt 3 werkt het goed, al draait de motor nog te ver door. Het probleem waar ik tegenaan loop is dat de code de hele tijd wordt verstoord omdat er de hele tijd interrupts binnenkomen omdat de motor nog uitdraait. Interrupts kan ik niet tijdelijk uitzetten, dan mis je pulsen en weet je niet wat de exacte positie is. Ik heb al het één en ander geprobeerd om met booleans de situatie aan te geven e.d., maar ik krijg het niet werkend. Heeft iemand nog een gouden tip hoe ik dit kan oplossen?
Je kan proberen een soort van PID controller hiervoor te maken. Op wikipedia staat hiervoor een voorbeeld. Maar als het echt ligt aan de arduino dan zou je de interrupts door een externe processor moeten laten afhandelen (of een snellere arduino kopen). Ik ga zelf binnenkort proberen de encoders van oude balmuizen te gebruiken. De chip die over de PS/2 port praat kan ook met een arduino praten en die handelt dan de intererrupts af.

Acties:
  • 0 Henk 'm!

  • Sissors
  • Registratie: Mei 2005
  • Niet online
Enige wat die interrupt dus hoeft te doen is wat stuff opslaan van huidige state, een register eentje ophogen, en weer verder gaan. Lijkt me niet dat dat een probleem kan geven eigenlijk.

Acties:
  • 0 Henk 'm!

Verwijderd

mcDavid schreef op maandag 03 december 2012 @ 12:48:
Een nano heeft een andere USB-to-Serial chip, dus dat'ie een andere naam heeft kan goed kloppen. Heb je ook het goeie board geselecteerd in je arduino IDE?

Wat je anders nog zou kunnen doen is de bootloader flashen. Dan weet je zeker dat die goed is.
Hier staat uitgelegd hoe dat moet: http://arduino.cc/en/Tutorial/ArduinoISP

-edit-
weet je zeker dat het niet de pin 13 led is die 3x knippert? Die hoort namelijk 3x te knipperen na een reset.

-edit2-
en probeer altijd eerst een keer gewoon het standaard blink-programma'tje te uploaden en kijk of dat wel goed gaat.
ik heb ook het goede board gekozen in mijn IDE. het is zeker de RX led die 3 keer knippert, hij knippert ook veel trager als de led op pin 13 die 3 X knippert na een reset.

ik probeer inderdaad om blink te uploaden naar de arduino.

Ook de bootloader flashen lijkt weinig verschil te maken, maar ik weet niet precies of dat gelukt is dus daar ga ik nog even mee kloten.

Acties:
  • 0 Henk 'm!

  • kitao
  • Registratie: Juli 2012
  • Laatst online: 05-09 16:01
almightyarjen schreef op maandag 03 december 2012 @ 11:51:
Heeft iemand nog een gouden tip hoe ik dit kan oplossen?
Sorry Arjen, die heb ik niet, ik ben nog lang niet zover :-(
edit: Sjeez Kitao, wat een dradenbende :D
Yep, zeg dat wel en vanmorgen nog een stuk of 30 eraan vastgeknoopt om de driver max7221 eraan te koppelen.
Schietgebedje gedaan, programma ingeladen en ......... nada niks njente. :F
Even zag ik het niet meer zitten maar na 3 keer opnieuw de chip zo hard mogelijk in het breadboard te hebben gepropt kwam er eindelijk beeld }:|
Afbeeldingslocatie: http://s9.postimage.org/5fef9ya63/IMG_0304.jpg
klik
(Op de foto zie je 2 gradendriehoeken die geklemd de dradenjungle boven het display vandaan houden)
Dus nu werkt het hoewel het soms nog de neiging heeft om vast te lopen op 8.8.8.8.8.8.8.8. hetgeen ook verdraaid lastig is om er weer uit te krijgen.
Geen idee hoe dat komt maar dat slurpt wel lekker stroom dan.
En dat brengt me bij een vraag :
Het breadboard en de M7221 worden gevoed vanaf de uno.
De uno is aangesloten op een usb vanaf de computer én de uno is aangesloten op een 7.5V adapter vanaf het lichtnet op de jack.
Waar haalt de uno nu zijn voeding vandaan ?!! :?

Vanaf de jack of vanaf de usb ?

Acties:
  • 0 Henk 'm!

  • almightyarjen
  • Registratie: Maart 2002
  • Laatst online: 22:38

almightyarjen

When does the hurting stop?

furby-killer schreef op maandag 03 december 2012 @ 13:47:
Enige wat die interrupt dus hoeft te doen is wat stuff opslaan van huidige state, een register eentje ophogen, en weer verder gaan. Lijkt me niet dat dat een probleem kan geven eigenlijk.
Ik begrijp waar je heen wilt, maar ik zie dat nog niet als praktische toepassing. Kan je het wat toelichten?

Patreon | Main Youtube | Work In Progress Youtube


Acties:
  • 0 Henk 'm!

  • almightyarjen
  • Registratie: Maart 2002
  • Laatst online: 22:38

almightyarjen

When does the hurting stop?

kitao schreef op maandag 03 december 2012 @ 14:12:
Vanaf de jack of vanaf de usb ?
Als de jack eraan zit via de jack. Anders via USB...

Patreon | Main Youtube | Work In Progress Youtube


Acties:
  • 0 Henk 'm!

Verwijderd

Flashen van de bootloader was dus inderdaad het probleem, ik deed het niet goed.

Nu is het wel gelukt en alles werkt.

Tnx!

Acties:
  • 0 Henk 'm!

  • Sissors
  • Registratie: Mei 2005
  • Niet online
almightyarjen schreef op maandag 03 december 2012 @ 14:16:
[...]

Ik begrijp waar je heen wilt, maar ik zie dat nog niet als praktische toepassing. Kan je het wat toelichten?
Vraag is vooral wat jouw interrupt routine nu precies doet. Wat voor een code heb jij daarin staan?

Acties:
  • 0 Henk 'm!

  • almightyarjen
  • Registratie: Maart 2002
  • Laatst online: 22:38

almightyarjen

When does the hurting stop?

furby-killer schreef op maandag 03 december 2012 @ 14:26:
[...]

Vraag is vooral wat jouw interrupt routine nu precies doet. Wat voor een code heb jij daarin staan?
de ISR kijkt naar de stand van de motor, als die groter of gelijk is aan de gewenste eindstand moet er geremd en gepositioneerd worden. Ik heb dat remmen en positioneren onderverdeeld in een aantal procedures, laten we zeggen "remmen", "positionerengrof" en "positionerenfijn". aan de hand van booleans wordt dan door de ISR bepaald welke procedure er moet worden aangeroepen. Aan het einde van een procedure wordt dus een boolean die refereert aan die procedure op false gezet en de boolean die refereert aan de volgende procedure wordt dan op true gezet.

Als bijvoorbeeld de procedure remmen bezig is, dan kan die halverwege worden onderbroeken door een interrupt omdat de motor nog draait. Het gevolg daarvan is dat de procedure remmen weer opnieuw wordt gestart (de booleanwaarden zijn immers niet veranderd omdat de procedure niet geheel is doorlopen). En dit geeft problemen, terwijl het volgens mij theoretisch wel zou moeten werken...

code voor ISR (als je er iets mee kan):
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
    #if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)
    if((bool)(PINE & _BV(5)) == (bool)(PING & _BV(2))) 
        _secondTachPos++;
    else
        _secondTachPos--;
    #else
    if((bool)(PIND & _BV(3)) == (bool)(PIND & _BV(6))) 
        _secondTachPos++;
    else
        _secondTachPos--;
    #endif
    if (mustBrake2 == false)
    {
        secondEncoder();
    }
    if (mustBrake2 == true)
    {
        braking2();
    }
    if (mustRoughFinalize2 == true)
    {
        roughFinalizing2();
    }
    if (mustFineFinalize2 == true)
    {
        //fineFinalizing2();
    }


Code voor procedure remmen:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void braking2()
{
    //Serial.print ("br ");
    digitalWrite(secondPWM, HIGH);
    digitalWrite(logicSecond1, HIGH);
    digitalWrite(logicSecond2, LOW);  //go backward (enforced brake)
    counter2++;  //counter2 zorgt dat deze procedure 2x wordt doorlopen en werkt als delay
    delay (2);
    if (counter2 > 2)
    {
        digitalWrite(logicSecond2, HIGH);  //actual brake
        Serial.print ("br2 ");
        counter2 = 0;
        mustRoughFinalize2 = true;
        mustBrake2 = false;
    }

Patreon | Main Youtube | Work In Progress Youtube


Acties:
  • 0 Henk 'm!

  • sopsop
  • Registratie: Januari 2002
  • Laatst online: 12-09 14:36

sopsop

[v] [;,,;] [v]


Acties:
  • 0 Henk 'm!

  • Mr_gadget
  • Registratie: Juni 2004
  • Laatst online: 21:32

Mr_gadget

C8H10N4O2 powered

almightyarjen schreef op maandag 03 december 2012 @ 14:50:
[...]

de ISR kijkt naar de stand van de motor, als die groter of gelijk is aan de gewenste eindstand moet er geremd en gepositioneerd worden. Ik heb dat remmen en positioneren onderverdeeld in een aantal procedures, laten we zeggen "remmen", "positionerengrof" en "positionerenfijn". aan de hand van booleans wordt dan door de ISR bepaald welke procedure er moet worden aangeroepen. Aan het einde van een procedure wordt dus een boolean die refereert aan die procedure op false gezet en de boolean die refereert aan de volgende procedure wordt dan op true gezet.
Ik zou proberen de interrupt procedure alleen de de encoders waarden bij te laten houden (dus de interrupt routine kleiner maken) of alles in de interrupt doen.

Acties:
  • 0 Henk 'm!

  • mr_obb
  • Registratie: Juni 2001
  • Laatst online: 01-09 14:15

mr_obb

Lakse Perfectionist

Serial.print kan je beter sowieso niet in je ISR (of subroutines) gebruiken, aangezien die zelf ook gebruik maakt van (timer) interrupts. Verder heb je delays in je ISR staan. Dat is ook niet handig.

Wat Mr_gadget zegt dus eigenlijk...

Acties:
  • 0 Henk 'm!

  • Sissors
  • Registratie: Mei 2005
  • Niet online
In principe zolang je binnen je ISR zit mag hij niet nog een interrupt starten. Als het te lang duurt kan het dus wel dat je interrupts mist (de volgende interrupt zal in de wachtrij gezet worden voor wanneer je ISR klaar is, maar als je er dan nog eentje krijgt is hij verdwenen).

Verder wat de twee bovenstaande zeggen: in principe wil je je ISR zo kort mogelijk houden, oftewel enkel je encoder bij laten houden, en mogelijk nog wat vlaggetjes zetten ofzo, maar meer niet. Vooral bij zoiets wat toch redelijk snel zijn werk moet doen.

Daarnaast, zijn al jouw global variabelen die in de ISR worden gebruikt gedefinieerd als volatile? Anders hebben compilers de neiging ze gewoon weg te gooien.

Acties:
  • 0 Henk 'm!

  • almightyarjen
  • Registratie: Maart 2002
  • Laatst online: 22:38

almightyarjen

When does the hurting stop?

oops :D
furby-killer schreef op maandag 03 december 2012 @ 16:01:
In principe zolang je binnen je ISR zit mag hij niet nog een interrupt starten. Als het te lang duurt kan het dus wel dat je interrupts mist (de volgende interrupt zal in de wachtrij gezet worden voor wanneer je ISR klaar is, maar als je er dan nog eentje krijgt is hij verdwenen).

Verder wat de twee bovenstaande zeggen: in principe wil je je ISR zo kort mogelijk houden, oftewel enkel je encoder bij laten houden, en mogelijk nog wat vlaggetjes zetten ofzo, maar meer niet. Vooral bij zoiets wat toch redelijk snel zijn werk moet doen.

Daarnaast, zijn al jouw global variabelen die in de ISR worden gebruikt gedefinieerd als volatile? Anders hebben compilers de neiging ze gewoon weg te gooien.
Ik heb verder niet stilgestaan bij het volatile-gebeuren, goede opmerking! Ik zal daar ook eens naar kijken.

Ik begrijp dat de ISR zo kort mogelijk moet worden gehouden, maar hoe los je het dan op als je een reeks bewerkingen moet uitvoeren zoals in mijn geval? De ISR is in mijn geval al vrij kort: die verwijst door naar een andere procedure. Dan zal de procedure waarnaar verwezen wordt dus korter moeten zijn, maar dan kan ik weer niet alle bewerkingen uitvoeren...

Patreon | Main Youtube | Work In Progress Youtube


Acties:
  • 0 Henk 'm!

  • mr_obb
  • Registratie: Juni 2001
  • Laatst online: 01-09 14:15

mr_obb

Lakse Perfectionist

Als je doorverwijst naar een andere procedure in je ISR, dan is die procedure ook onderdeel van de ISR. In jouw geval wordt de ISR en braking2 doorlopen, voordat het stokje weer terug wordt gegeven aan de loop().

Alles naar de #endif wil je niet in de ISR hebben.

Ik zou trouwens ook kijken naar je if-statements. Kan je daar niet meer met 'else' of 'else if' werken?

Acties:
  • 0 Henk 'm!

  • Sissors
  • Registratie: Mei 2005
  • Niet online
[b][message=39387010,noline]almightyarjen schreef op maandag 03 december 2012 @ 19:17
Ik begrijp dat de ISR zo kort mogelijk moet worden gehouden, maar hoe los je het dan op als je een reeks bewerkingen moet uitvoeren zoals in mijn geval? De ISR is in mijn geval al vrij kort: die verwijst door naar een andere procedure. Dan zal de procedure waarnaar verwezen wordt dus korter moeten zijn, maar dan kan ik weer niet alle bewerkingen uitvoeren...
Je kan bijvoorbeeld een flag laten zetten, bijvoorbeeld een global variabele 'nieuweMeting', die je true maakt als er een interrupt is, en false als je in je main loop dat detecteerd en er wat mee doet. (Wel rekening er mee houden dat die dan in je main loop kan wijzigen als er nog een interrupt komt).

Je kan ook ietsjes meer doen dan dat, bijvoorbeeld je positiebepaling, en dan doe je daarna nog iets van:
code:
1
2
3
4
if (secondTachPos > MAX_POS)
  moetRemmen = true;
else
  moetRemmen = false;

(moetRemmen moet dan global volatile variabele zijn).

Dan kan je in je main loop kijken of moetRemmen true is of false is. Uiteraard kan je ook die vergelijking in je main loop doen, scheelt iets in je ISR, maar het is niet dat je helemaal niks in je ISR mag doen, alleen geen uitgebreide berekeningen, geen delays, en niks anders dat veel tijd kost. (En al helemaal niet iets dat blocked, zoals wachten tot je seriele data krijgt).

Acties:
  • 0 Henk 'm!

  • almightyarjen
  • Registratie: Maart 2002
  • Laatst online: 22:38

almightyarjen

When does the hurting stop?

Okee, bedankt. Ik zal er eens naar kijken of ik het wat anders kan opzetten. De if statements heb ik even lomp neergezet maar dat moet inderdaad wel wat netter ja...

Patreon | Main Youtube | Work In Progress Youtube


Acties:
  • 0 Henk 'm!

  • kitao
  • Registratie: Juli 2012
  • Laatst online: 05-09 16:01
Ik had het er in een vorige post al over dat een 8-digit-display dat op een leddriver de max7221 zit aangesloten, dat die soms ineens vast staat op de weergave 8.8.8.8 8.8.8.8.
Eerst had ik montagedraad zitten tussen de uno en de load, clock en data-in van het IC maar die heb ik omgewisseld met jumpers wat iets steviger zit en hoewel het nu minder vaak voorkomt is het verschijnsel nog niet verdwenen. Ik heb nu een 24-uurs downcounter erin gezet maar toen ik thuis kwam stond die ook vast.
Wordt dit veroorzaakt door hardware of door de software ?
En indien hardware is dat dan het IC of de bedrading of de uno ?
En ook al weet je het antwoord niet, is dit een bekend verschijnsel dat vaker optreedt ?
Alvast bedankt :)

Ps, de rimpelcondensatoren zitten gewoon aangesloten volgens deze afbeelding :

Afbeeldingslocatie: http://arduino.cc/playground/uploads/Main/MAX72XX_SPI.jpg

Acties:
  • 0 Henk 'm!

  • almightyarjen
  • Registratie: Maart 2002
  • Laatst online: 22:38

almightyarjen

When does the hurting stop?

kitao schreef op dinsdag 04 december 2012 @ 19:26:
Ik had het er in een vorige post al over dat een 8-digit-display dat op een leddriver de max7221 zit aangesloten, dat die soms ineens vast staat op de weergave 8.8.8.8 8.8.8.8.
Eerst had ik montagedraad zitten tussen de uno en de load, clock en data-in van het IC maar die heb ik omgewisseld met jumpers wat iets steviger zit en hoewel het nu minder vaak voorkomt is het verschijnsel nog niet verdwenen. Ik heb nu een 24-uurs downcounter erin gezet maar toen ik thuis kwam stond die ook vast.
Wordt dit veroorzaakt door hardware of door de software ?
En indien hardware is dat dan het IC of de bedrading of de uno ?
En ook al weet je het antwoord niet, is dit een bekend verschijnsel dat vaker optreedt ?
Alvast bedankt :)

Ps, de rimpelcondensatoren zitten gewoon aangesloten volgens deze afbeelding :

[afbeelding]
Als je nou de software aanpast, zodat de klok ipv "88888888", "11111111" weergeeft, hangt de klok dan ook? If so, dan lijkt het me eerder een softwareprobleem dan een hardware probleem...

Patreon | Main Youtube | Work In Progress Youtube


Acties:
  • 0 Henk 'm!

  • kitao
  • Registratie: Juli 2012
  • Laatst online: 05-09 16:01
Dit is de software :
C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
// ********************************************************************
// *                       24 Hour Coundown                           *
// *  Because if you have just built a MAX7221/MAX7219 Based 8 Digit, *
// *  7 Segment, LED Display then you will want to test it somehow.   *
// *  Nothing says LED Segment display more than a TV/Film style      *
// *  countdown timer.                                                *
// *                                                                  *
// *  A silly test routine by Blair Thompson - www.justblair.co.uk    *
// ********************************************************************

#include <LedControl.h>    //We cant do anything without importing a suitable library!

// Lets start with the pinouts to the Max72xx led driver
// *****************************************************

int DIN = 12;              // Pin 1  on the Max72xx
int CLK = 11;              // Pin 13 on the Max72xx
int LOADCS = 10;           // Pin 12 on the Max72xx

int flashDelay = 100;      // delay in MS (100=1/10th second) 
int ledBrightness = 15;    // range is 0-15.  0=lowest, 15 = full power

// define the LedControl instance - if I want more I can setup lc2, lc3 etc
// ************************************************************************

LedControl lc=LedControl(DIN,CLK,LOADCS,1);    // DIN, CLK, Load/CS, 1 = only one chip MAX chip attached.

void setup()                    
{ 
  pinMode(DIN, OUTPUT);        // once only, lets make the pins outputs 
  pinMode(CLK, OUTPUT); 
  pinMode(LOADCS, OUTPUT); 

  // take pins out of power save mode.  No updates otherwise. 
  for(int index=0;index<lc.getDeviceCount();index++) { 
    lc.shutdown(index,false); 
  }

  lc.setIntensity(0,ledBrightness  ); //set the brightness 
}

void loop()                     // here comes the good stuff, the main loop!
{
  int row = 0;                  //Set the starting position
  int chipId = 0;               //This is not strictly reqd, but if using more than one display this will be needed

  // First lets display the hours
  // ****************************

  for (int hourcountdown=24; hourcountdown>0; hourcountdown--){
    int x=hourcountdown;
    int hourones;
    int hourtens;
    hourones=x%10;
    hourtens=x/10%10;                                     // %10 divides by ten and extracts the remainder
    lc.setChar(chipId, row+5, 'h', false);                // Adds the letter H
    lc.setDigit(chipId, row+6, (byte) hourones, false);   // These two lines add the numerical hours 
    lc.setDigit(chipId, row+7, (byte) hourtens, false);   // This technique is repeated several times!

    //  Now the minutes
    for (int minutecountdown=60; minutecountdown >0; minutecountdown--){
      int y=minutecountdown;
      int minuteones;
      int minutetens;
      minuteones=y%10;
      minutetens=y/10%10;                                   // %10 divides by ten and extracts the remainder
      lc.setDigit(chipId, row+3, minuteones, true);         // These two lines add the numerical hours
      lc.setDigit(chipId, row+4, minutetens, false);        // Deja Vu?

      //  And the seconds/tenths just to make it look exciting!
      for (int seccountdown=600; seccountdown>0; seccountdown--){
        int v=seccountdown;
        int tenths;
        int secones;
        int sectens;
        int thousands;
        tenths=v%10;                                         // Again divide by 10 and calculate the remainder
        secones=v/10%10;                                      
        sectens=v/100%10;
        thousands=v/1000%10;
        lc.setDigit(chipId, row, (byte) tenths, false);       
        lc.setDigit(chipId, row+1, (byte) secones, true);    // True in the arguments activates the dot...
        lc.setDigit(chipId, row+2, (byte) sectens, false);
        delay (flashDelay);
      }
    }
  }
}
// *** That's All Folks!!! Jack Bauer eat your heart out! ***

Ik snap daar geen bal weinig van, maar dat die klok 88888888 moet aangeven komt daar volgens mij helemaal niet in voor.
Dat is gewoon een positie waar mijn hele opstelling - ook bij andere programma's - soms ineens naar toe springt.
En dan staat alles vast.
Nu vind ik dat geen ramp want dit is toch alleen maar om te testen maar ik zou wel eens een reden willen weten. Zouden de vele draden die gebruikt zijn toch voor storingsvelden kunnen zorgen ?

Acties:
  • 0 Henk 'm!

  • almightyarjen
  • Registratie: Maart 2002
  • Laatst online: 22:38

almightyarjen

When does the hurting stop?

Het programma geeft inderdaad nooit 888888 aan. Het kan zijn dat er een draadje los zit, wat ervoor zorgt dat het hele gebeuren in de war raakt, maar die kans lijkt me klein. De vele draden zouden ook niet voor al te veel storing kunnen zorgen volgens mij, aangezien het allemaal vrij laagfrequent is. Je zou kunnen proberen om de tienden van seconden weg te laten, dan moet je de volgende regel weghalen of "//" voorzetten:
code:
1
        lc.setDigit(chipId, row, (byte) tenths, false);

Gebeurt het altijd op hetzelfde tijdstip? Na een uur? 10 minuten? Probeer dat ook een na te gaan. En anders zou je die kerel nog kunnen mailen, of hij bekend is met het probleem. Je kan hem contacten via zijn website.. Ben wel benieuwd wat het probleem is!

Patreon | Main Youtube | Work In Progress Youtube


Acties:
  • 0 Henk 'm!

  • kitao
  • Registratie: Juli 2012
  • Laatst online: 05-09 16:01
almightyarjen schreef op dinsdag 04 december 2012 @ 22:01:
Het kan zijn dat er een draadje los zit, wat ervoor zorgt dat het hele gebeuren in de war raakt, maar die kans lijkt me klein.
Gebeurt het altijd op hetzelfde tijdstip? Na een uur? 10 minuten? Probeer dat ook eens na te gaan.
Nee, er zit geen vast ritme in, maar iets zit niet goed.
Ook onderstaand programma, wat ik zelf gemodificeerd heb, knippert lukraak, soms volgens bedoeling, dan weer wordt niet het hele display gecleard en blijven er tekens staan, dan worden weer niet alle tekens geschreven en ook dit alles niet volgens vaste volgorde volgens mij.
Ik vermoed toch ergens een draadje, wat niet zo gek hoeft te zijn aangezien er een stuk of 100 op zitten waarvan 70 montagedraad. Jumpers maken veel beter kontakt maar die zijn op.
Ook ga ik die niet onzinnig allemaal nameten natuurlijk.
Een andere mogelijkheid is dit misschien ?
The capacitors are there to supress noise signals introduced through the power-supply lines. By no means these 2 capacitors can be ommitted, as it might lead to sporadic or permanent malfunctions. These types of errors are really hard to track down. Both capacitors must be placed as near as possible to the V+ and the Gnd pins of the MAX72XX.
http://playground.arduino.cc/Main/MAX72XXHardware
Maar ja, die zitten erbij en korter bij de bewuste pennen en voedingslijnen krijg ik ze niet.

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
#include "LedControl.h" //  need the library
LedControl lc=LedControl(12,11,10,1); // lc is our object
// pin 12 is connected to the MAX7219 pin 1
// pin 11 is connected to the CLK pin 13
// pin 10 is connected to LOAD pin 12
// 1 as we are only using 1 MAX7219
void setup()
{
  // the zero refers to the MAX7219 number, it is zero for 1 chip
  lc.shutdown(0,false);// turn off power saving, enables display
  lc.setIntensity(0,8);// sets brightness (0~15 possible values)
  lc.clearDisplay(0);// clear screen
}
void loop()
{

lc.setRow(0,0,B00010101);
lc.setChar(0,1,'E',false);
lc.setDigit(0,2,1,0);
lc.setRow(0,3,B01110110);
lc.setRow(0,4,B01110110);
lc.setDigit(0,5,1,0);
lc.setChar(0,6,'d',false);
lc.setChar(0,7,'e',false);
delay(1000);
lc.clearDisplay(0);
delay(1000);

}


En ik zal jouw tip even toepassen van het verwijderen van die regel, kan echter wel een uur of zelfs 24 uur duren voordat ik er definitief iets over kan zeggen. :)

[ Voor 4% gewijzigd door kitao op 04-12-2012 22:34 ]


Acties:
  • 0 Henk 'm!

  • Sissors
  • Registratie: Mei 2005
  • Niet online
almightyarjen schreef op dinsdag 04 december 2012 @ 22:01:
Het kan zijn dat er een draadje los zit, wat ervoor zorgt dat het hele gebeuren in de war raakt, maar die kans lijkt me klein.
Lijkt mij eigenlijk erg grote kans, want dit is typisch gedrag van slecht contact, of toch teveel storing op de voeding.

Oftewel: check de bekabeling. Gezien dat dit bij alle displays misgaat, moet het misgaan rond de arduino/IC. Oftewel de kabels die die twee met elkaar verbinden, of voeding/aarde van het IC.

Je capaciteiten. Zeker weten dat die van 100nF ook 100nF is en niet bijvoorbeeld 100pF? 10uF zit er goed om in?

En je voeding, kan die voldoende stroom leveren?


Wat gebeurd er als je de handel aan zet, maar niks naar het IC verstuurd? Doet hij dan hetzelfde?

Acties:
  • 0 Henk 'm!

  • kitao
  • Registratie: Juli 2012
  • Laatst online: 05-09 16:01
De verbinding met de uno en het IC had ik al betere jumpers tussen gezet, de condensatoren kloppen ook, dat weet ik zeker.
De voeding is een 7.5V/1A adapter dus dat lijkt me voldoende.
De bekabeling checken wordt gezien de hoeveelheid erg lastig, pas als ik een flinke set jumpers erbij heb dan kan ik evt. 1 op 1 gaan vervangen. Helaas is ebay niet vlot met leveren van vooraf betaalde spullen merk ik.
En als ik niks naar het IC stuur ?
Dat wordt morgen, ik heb nu de countdown gestart, deze gezet op 3 uur en de tienden seconden verwijderd zoals Arjen tipte. Na 8 minuten gaat nog steeds goed.

Acties:
  • 0 Henk 'm!

  • Sissors
  • Registratie: Mei 2005
  • Niet online
Als dat het probleem is is het overspraak, dat is in principe geen heel vreemd idee met die hoeveelheid kabels, dus dat is afwachten. Levering van ebay ligt er aan waar je het besteld, veel zijn Chinezen, en dan duurt het gewoon een tijdje.

Al die bekabeling kan wel overspraak geven, maar een los kabeltje daar zal niet het probleem zijn. Dan doet gewoon één segment het bijvoorbeeld niet, maar dan hoort niet alles zich te resetten.

Acties:
  • 0 Henk 'm!

  • almightyarjen
  • Registratie: Maart 2002
  • Laatst online: 22:38

almightyarjen

When does the hurting stop?

furby-killer schreef op dinsdag 04 december 2012 @ 22:58:
Als dat het probleem is is het overspraak, dat is in principe geen heel vreemd idee met die hoeveelheid kabels, dus dat is afwachten. Levering van ebay ligt er aan waar je het besteld, veel zijn Chinezen, en dan duurt het gewoon een tijdje.

Al die bekabeling kan wel overspraak geven, maar een los kabeltje daar zal niet het probleem zijn. Dan doet gewoon één segment het bijvoorbeeld niet, maar dan hoort niet alles zich te resetten.
Overspraak krijg je toch eigenlijk alleen maar bij wat hogere frequenties? Van de voeding kan het niet komen want daar zitten al condensatoren op.

Furby, is het een idee om die current limiting resistor eens wat hoger te maken, zodat je het display nog net kan zien branden? Bij lagere stromen zou de overspraak dan minder moeten zijn, als het in het deel tussen het IC en het display plaatsvindt...

Patreon | Main Youtube | Work In Progress Youtube


Acties:
  • 0 Henk 'm!

  • kitao
  • Registratie: Juli 2012
  • Laatst online: 05-09 16:01
Ik kan software-matig het display nog wat dimmen, die staat nu op 8 van schaal 0-15.
Nu zit er een 33K in en ik heb wel kleinere meebesteld maar geen grotere, die moet ik dan morgen gaan zoeken.
Overigens is het display behoorlijk helder nu en is inmiddels 1 uur weggetikt zonder problemen.
Ik zal de delay dan ook in mijn mini-programma wat hoger zetten, kijken of dat helpt.
Tnx voor de tips in ieder geval. :)

Acties:
  • 0 Henk 'm!

  • F.West98
  • Registratie: Juni 2009
  • Laatst online: 02:23

F.West98

Alweer 16 jaar hier

Topicstarter
:(
Ik zit te kloten met een servomotor icm de popbot (zie pagina terug). Op het moment dat de bot rijdt, (= weerstand) gaat de servomotor niet goed draaien (aangegeven plekken 850 en 1850). Hij stopt bij 1850, hapert daar en draait verder door. Hij draait zichzelf (de constructie eraan) dan kapot. Op het moment dat hij stilstaat/wordt opgetild is het probleem over en draait hij weer goed.
Hoe los ik dit op?

2x Dell UP2716D | R9 7950X | 128GB RAM | 980 Pro 2TB x2 | RTX2070 Super
.oisyn: Windows is net zo slecht in commandline als Linux in GUI


Acties:
  • 0 Henk 'm!

  • almightyarjen
  • Registratie: Maart 2002
  • Laatst online: 22:38

almightyarjen

When does the hurting stop?

kitao schreef op dinsdag 04 december 2012 @ 23:49:
Ik kan software-matig het display nog wat dimmen, die staat nu op 8 van schaal 0-15.
Nu zit er een 33K in en ik heb wel kleinere meebesteld maar geen grotere, die moet ik dan morgen gaan zoeken.
Overigens is het display behoorlijk helder nu en is inmiddels 1 uur weggetikt zonder problemen.
Ik zal de delay dan ook in mijn mini-programma wat hoger zetten, kijken of dat helpt.
Tnx voor de tips in ieder geval. :)
Oh, maar wellicht is het dimmen het probleem: dat gebeurt met een aardig hoge frequentie wat eventueel storing kan veroorzaken. Probeer die eens op maximaal te zetten (HIGH), wellicht dat dat helpt (als je huidige proef de mist in gaat)
F.West98 schreef op dinsdag 04 december 2012 @ 23:50:
:(
Ik zit te kloten met een servomotor icm de popbot (zie pagina terug). Op het moment dat de bot rijdt, (= weerstand) gaat de servomotor niet goed draaien (aangegeven plekken 850 en 1850). Hij stopt bij 1850, hapert daar en draait verder door. Hij draait zichzelf (de constructie eraan) dan kapot. Op het moment dat hij stilstaat/wordt opgetild is het probleem over en draait hij weer goed.
Hoe los ik dit op?
Wat heb je eraan veranderd dan, want hij deed het wel toch?

Patreon | Main Youtube | Work In Progress Youtube


Acties:
  • 0 Henk 'm!

  • Sissors
  • Registratie: Mei 2005
  • Niet online
almightyarjen schreef op dinsdag 04 december 2012 @ 23:39:
[...]

Overspraak krijg je toch eigenlijk alleen maar bij wat hogere frequenties? Van de voeding kan het niet komen want daar zitten al condensatoren op.

Furby, is het een idee om die current limiting resistor eens wat hoger te maken, zodat je het display nog net kan zien branden? Bij lagere stromen zou de overspraak dan minder moeten zijn, als het in het deel tussen het IC en het display plaatsvindt...
Dat zou inderdaad kunnen helpen, geeft iig minder troep op de output dan softwarematig dimmen.

Je hebt gelijk dat overspraak bij hoge frequenties is, maar het hard aan en uitschakelen van die displays zitten flink wat hoge frequenties in, en dat zal ook op een redelijke snelheid scannen. Normaal gesproken zou ik zeggen: geen probleem. Maar laten we wel wezen, dat is niet de meest subtiele dradenbende ooit ;)

Probleem voor mij blijft vooral dat het die complete chip moet zijn die over de zeik gaat, het kan niet van 1 segment een draadje zijn, het moet alles zijn.

Acties:
  • 0 Henk 'm!

  • kitao
  • Registratie: Juli 2012
  • Laatst online: 05-09 16:01
@Arjen
Proef loopt nog, maar ik heb iets veranderd wat een bug oplevert :
C++:
1
2
3
4
5
6
7
8
9
 for (int hourcountdown=3; hourcountdown>0; hourcountdown--){ 
    int x=hourcountdown; 
    int hourones; 
    int hourtens; 
    hourones=x%10; 
    hourtens=x/10%10;                                     // %10 divides by ten and extracts the remainder 
    lc.setChar(chipId, row+5, 'h', false);                // Adds the letter H 
    lc.setDigit(chipId, row+6, (byte) hourones, false);   // These two lines add the numerical hours  
    lc.setDigit(chipId, row+7, (byte) hourtens, false);   // This technique is repeated several times! 

In regel 1 stond eerst in de originele code :
C++:
1
for (int hourcountdown=24; hourcountdown>0; hourcountdown--){ 

die 24 heb ik veranderd in 3
helaas na een uur wegtikken is de 3 niet versprongen naar 2 maar blijft lekker op 3 staan terwijl bij een vorige test de 24 wel naar 23 versprong. Dit heeft te maken met de afronding denk ik dus ligt niet zozeer aan de hardware volgens mij.
Voluit zetten wordt ook weer morgen, ik wil nog even zien of het volgende uur naar 2 verspring of naar 1 of helemaal niet.
@furby
Maar laten we wel wezen, dat is niet de meest subtiele dradenbende ooit
;)
Daar schaam ik me ook niet voor hoor, de bedoeling was een echte 64 leds klokje te maken dus een seriele display of een intern doorverbonden type was geen optie.
Ook moet ik roeien met wat ik heb, grote hoeveelheden steekbruggen op maat heb ik nu eenmaal niet :)
Afbeeldingslocatie: http://s17.postimage.org/69osmg16j/524530_ZB_00_FB_EPS_1000.jpg
Als de klok af is dan heb ik toch de breadboards en de jumpers weer nodig dus dan maak ik het zo compact mogelijk, dat werkt wellicht beter.

Edit: de uren zijn inderdaad ineens van 3 naar 1 versprongen dus het ligt aan de afronding.
Afbeeldingslocatie: http://img.youtube.com/vi/3HeWLXY200Q/default.jpg
So far so good !!
Gouden tip van die tienden verwijderen Arjen d:)b

[ Voor 9% gewijzigd door kitao op 05-12-2012 00:47 . Reden: afb. aangepast ]


Acties:
  • 0 Henk 'm!

  • kitao
  • Registratie: Juli 2012
  • Laatst online: 05-09 16:01
Mogge,
Het euvel is verholpen denk ik. Het geval was namelijk dat ik op pen 11 van de max7221 niet alleen digit 1 had aangesloten maar ook de load/cs vanaf de arduino en pen 12 van het IC was helemaal niet aangesloten !!!!
:F |:( :$

Ik zag het toen ik er een vergrootglas bijpakte en het helpt ook niet als het kleurenassortiment draden op is zodat alles één kluwen lijkt. }:|
Leuke vraag is dan natuurlijk dat het resultaat eigenlijk tijdens die foute bedrading nog niet eens zo slecht was, die load/cs draad lijkt me toch niet triviaal of wel ?
edit:
Eigenlijk is het enkel /CS en niet Load/CS want ik heb de 7221 :
Afbeeldingslocatie: http://s12.postimage.org/5kmmyqajd/img86.jpg
Chip-Select Input. Serial data is loaded into the shift register while CS is low. The last 16 bits of
serial data are latched on CS’s rising edge.
Toch vreemd dat alles dan nog in verhouding redelijk werkte terwijl die niet eens aangesloten was

[ Voor 28% gewijzigd door kitao op 05-12-2012 09:25 ]


Acties:
  • 0 Henk 'm!

  • almightyarjen
  • Registratie: Maart 2002
  • Laatst online: 22:38

almightyarjen

When does the hurting stop?

Kitao, dat soort foutjes, daar kan je zoveel tijd aan kwijt zijn.. Maar respect voor je doorzettingsvermogen :D En waarom hij het nog zo goed deed: ik heb zo geen idee...

Patreon | Main Youtube | Work In Progress Youtube


Acties:
  • 0 Henk 'm!

  • kitao
  • Registratie: Juli 2012
  • Laatst online: 05-09 16:01
Tnx, dat zal iedereen wel gebeuren denk ik, jouw rover had ook veel bedrading.
Over /CS (chip select) staat hier een mooi stukje, aangezien er maar één chip is in mijn opstelling is dat mss de verklaring waarom het toch redelijk werkte.
Overigens net geprobeerd de /CS direkt op 5V te zetten en direkt op GND maar gaf geen goed resultaat.
Ook 'snel' (kabeltje overzetten) van 5V switchen naar GND zodat er een hoog/laag signaal werd gesimuleerd deed niks.
Foutief terug zetten op pen11 (dig1) en de klok liep weer.
(ondertussen heb ik wellicht al tig keer kortsluiting gemaakt, maar lijkt geen effect te hebben, chip leeft nog

Affin, weinig boeiend ook, je moet gewoon goed aansluiten die handel dan hoef je ook niet te gaan zoeken waarom het wel werkt als het niet goed zit toch ? :P

En over dat doorzetten, ik heb weinig keus, ik heb geen bordje of een draadje meer over om wat anders neer te zetten zowat.
Afbreken doe ik niet want ik wacht op een RTC en veel meer toepassingen die ik met de huidige opstelling kan maken zie ik niet op het net.
Een getallengenerator had me wel leuk geleken maar ik vind daar nergens een code voor die ik nu kan toepassen :/

[ Voor 18% gewijzigd door kitao op 05-12-2012 11:02 ]


Acties:
  • 0 Henk 'm!

  • F.West98
  • Registratie: Juni 2009
  • Laatst online: 02:23

F.West98

Alweer 16 jaar hier

Topicstarter
almightyarjen schreef op woensdag 05 december 2012 @ 00:12:

[...]

Wat heb je eraan veranderd dan, want hij deed het wel toch?
Een servo toegevoegd :*)

2x Dell UP2716D | R9 7950X | 128GB RAM | 980 Pro 2TB x2 | RTX2070 Super
.oisyn: Windows is net zo slecht in commandline als Linux in GUI


Acties:
  • 0 Henk 'm!

Verwijderd

Vraagje: Ik wil mijn Arduino 2560 programmeren via ISP in plaats van de USB-poort.
Later wil ik ook de bootloader vervangen dus moet ik zowieso een ISP programmer hebben.
Welke programmer kan ik daar voor gebruiken? Ik wil hem niet alleen gebruiken met de
Arduino software. Maar ook met Atmel Studio 6. Ik zag een dingetje van Polulu. Maar
rijst al gauw de vraag, werkt dat wel. Wat gebruiken jullie?

Acties:
  • 0 Henk 'm!

  • frickY
  • Registratie: Juli 2001
  • Laatst online: 11-09 13:55
almightyarjen schreef op maandag 03 december 2012 @ 11:51:
Ik heb een NXT motor van Lego die ik aanstuur via een microcontroller (ATmega (arduino)). In deze motor zit een rotary encoder en zorgt voor een interrupt bij elke puls (één puls per graad). Het probleem met die motor is dat die door de bewegende massa nog een stukje doordraait zodra hij het stopcommando heeft gekregen. [...]
Heeft iemand nog een gouden tip hoe ik dit kan oplossen?
Wil je het perse software-matig oplossen?
Met een wormwiel zou je het doordraaien moeten kunnen voorkomen.

Acties:
  • 0 Henk 'm!

  • Icekiller2k6
  • Registratie: Februari 2005
  • Laatst online: 20:53
Hm vraagje mensen ik heb 2x Onewire Temp sensors (DS18b20) deze library heeft hier ergens een 750 delay insteken, maar ik heb ook een klok module die ik elke "seconde" wil laten updaten naar een LCD.

is hier een algemene oplossing voor? nu loopt de klok niet mooi per seconden, kan dit uiteraard verandere naar per min.. maar dat is eerder een omweg dan een oplossing

MT Venus E 5KW (V151) P1 HomeWizard | Hackerspace Brixel te Hasselt (BE) - http://www.brixel.be | 9800X3D, 96GB DDR5 6000MHZ, NVIDIA GEFORCE 4090, ASRock X670E Steel Legend, Seasonic GX1000


Acties:
  • 0 Henk 'm!

  • kitao
  • Registratie: Juli 2012
  • Laatst online: 05-09 16:01
Inmiddels RNG gevonden : http://arduino.cc/en/Reference/Random en deze hierin geplakt :
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
#include "LedControl.h" //  need the library
LedControl lc=LedControl(12,11,10,1); // lc is our object
// pin 12 is connected to the MAX7219 pin 1
// pin 11 is connected to the CLK pin 13
// pin 10 is connected to LOAD pin 12
// 1 as we are only using 1 MAX7219
long randNumber;

void setup()
{
  // the zero refers to the MAX7219 number, it is zero for 1 chip
  lc.shutdown(0,false);// turn off power saving, enables display
  lc.setIntensity(0,8);// sets brightness (0~15 possible values)
  lc.clearDisplay(0);// clear screen
  Serial.begin(9600);
  randomSeed(analogRead(0));
}
void loop(){
// print a random number from 0 to 9999
  randNumber = random(10000);
Serial.println(randNumber);
  lc.print(randNumber);  
  delay(2000);

}

Werkt prima op de monitor, maar helaas, ik krijg de volgende melding :
'class ledcontrol' has no member named 'lcprint' (regel 22)
Iets te simpel benaderd waarschijnlijk of beter gezegd, het programmeren wordt veels te ingewikkeld gemaakt. :+

Acties:
  • 0 Henk 'm!

  • Mattie112
  • Registratie: Januari 2007
  • Laatst online: 12-09 16:32
met andere woorden er is geen "lc.print"

met nog meer andere woorden
de class "LedControl" heeft geen methode "print"

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
Mattie112 schreef op woensdag 05 december 2012 @ 12:13:
met andere woorden er is geen "lc.print"

met nog meer andere woorden
de class "LedControl" heeft geen methode "print"
Nee, daar was ik ook al achter. Maar even graag een hintje in grote lijnen, hoe los je dit op ?
Ik krijg bijvoorbeeld 1234 als random number op de monitor, hoe hak je die in 4 stukjes zodat ieder cijfer op zn eigen 7-segment display terecht komt ?
En ik merk erbij op, als dit gecompliceerd is laat dan maar gaan, dit is geen vraag om even iets voor mij te laten programmeren, dan had ik maar les moeten nemen.
Als ik eenmaal de 4 cijfers heb van dit getal dan weet ik zelf hoe ze op de display te krijgen.

Acties:
  • 0 Henk 'm!

  • mr_obb
  • Registratie: Juni 2001
  • Laatst online: 01-09 14:15

mr_obb

Lakse Perfectionist

Icekiller2k6 schreef op woensdag 05 december 2012 @ 11:53:
Hm vraagje mensen ik heb 2x Onewire Temp sensors (DS18b20) deze library heeft hier ergens een 750 delay insteken, maar ik heb ook een klok module die ik elke "seconde" wil laten updaten naar een LCD.

is hier een algemene oplossing voor? nu loopt de klok niet mooi per seconden, kan dit uiteraard verandere naar per min.. maar dat is eerder een omweg dan een oplossing
Voor een PID-controller gebruik ik iets als onderstaande. Deze code is trouwens ongetest en ff snel uit mijn hoofd getypt...
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
int delayTime = 750; // Instellen van de delaytijd in ms.
unsigned long delayStartTime;
boolean delaying = false;

void setup()
{
 
}

void loop()
{
  if(!delaying){
    delayStartTime = millis(); // We beginnen NU met de delay.
    delaying = !delaying;
    //Hier de code die voor de delay moet plaatsvinden.

  } else {
    if(millis() - delayStartTime>delayTime) // Is de delay al verlopen?
    {
      delaying = !delaying;
      //Hier de code voor na de delay van 750 sec.
    }
  }    

}

Acties:
  • 0 Henk 'm!

  • Mattie112
  • Registratie: Januari 2007
  • Laatst online: 12-09 16:32
kitao schreef op woensdag 05 december 2012 @ 12:17:
[...]

Nee, daar was ik ook al achter. Maar even graag een hintje in grote lijnen, hoe los je dit op ?
Ik krijg bijvoorbeeld 1234 als random number op de monitor, hoe hak je die in 4 stukjes zodat ieder cijfer op zn eigen 7-segment display terecht komt ?
En ik merk erbij op, als dit gecompliceerd is laat dan maar gaan, dit is geen vraag om even iets voor mij te laten programmeren, dan had ik maar les moeten nemen.
Als ik eenmaal de 4 cijfers heb van dit getal dan weet ik zelf hoe ze op de display te krijgen.
Ik heb werkelijk waar geen idee. Open eventjes de readme (of de source zelf) van de library daar zal vast wel iets in staan hoe je hem moet gebruiken.

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


Acties:
  • 0 Henk 'm!

  • Icekiller2k6
  • Registratie: Februari 2005
  • Laatst online: 20:53
Umm hier zijn een aantal methodes voor 1 methode is het afsplitsen per "eenheid".
hiervoor moet je in dit geval wel weten of het groter is al 1000, 100, 10.
dan kun je zoiets doen
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int getal=1020;
int duizendtal=0;
int honderdtal=0;
int tiental=0;
int eenheid=0;
if(getal>=1000){
duizendtal=(int) (getal/1000);
getal-=(duizendtal*1000);
honderdtal=(int) (getal/100);
//etc
}else if(getal>=100){
//..
}else if(getal>=10){
//..
}else{
//..
}


mss dat er een elegantere oplossing is :P maar zit momenteel met aspx in m'n hoofd dus niet meteen een beter algoritme ervoor :-) (er is vast wel een)

MT Venus E 5KW (V151) P1 HomeWizard | Hackerspace Brixel te Hasselt (BE) - http://www.brixel.be | 9800X3D, 96GB DDR5 6000MHZ, NVIDIA GEFORCE 4090, ASRock X670E Steel Legend, Seasonic GX1000


Acties:
  • 0 Henk 'm!

  • Icekiller2k6
  • Registratie: Februari 2005
  • Laatst online: 20:53
hmm ik snap wat je bedoelt.. :-) maar dan heb je soms de kans dat de 50000 gereset is naar 0 ;-)
maar inderdaad is ook op te vangen..
maar er is dus geen "nette" manier om het op te vangen.. jammer :)

[ Voor 50% gewijzigd door Icekiller2k6 op 05-12-2012 12:27 ]

MT Venus E 5KW (V151) P1 HomeWizard | Hackerspace Brixel te Hasselt (BE) - http://www.brixel.be | 9800X3D, 96GB DDR5 6000MHZ, NVIDIA GEFORCE 4090, ASRock X670E Steel Legend, Seasonic GX1000


Acties:
  • 0 Henk 'm!

  • Mattie112
  • Registratie: Januari 2007
  • Laatst online: 12-09 16:32
kitao schreef op woensdag 05 december 2012 @ 12:17:
[...]

Nee, daar was ik ook al achter. Maar even graag een hintje in grote lijnen, hoe los je dit op ?
Ik krijg bijvoorbeeld 1234 als random number op de monitor, hoe hak je die in 4 stukjes zodat ieder cijfer op zn eigen 7-segment display terecht komt ?
En ik merk erbij op, als dit gecompliceerd is laat dan maar gaan, dit is geen vraag om even iets voor mij te laten programmeren, dan had ik maar les moeten nemen.
Als ik eenmaal de 4 cijfers heb van dit getal dan weet ik zelf hoe ze op de display te krijgen.
Miss heb je hier wat aan

C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
void countDown() {
  int i=9;
  lc.setDigit(0,(byte)i,false);
  //now we see the number '9'
  delay(1000);
  //switch the display off ...
  lc.shutdown(0,true);
  //and count down silently  
  while(i>1) {
    //data is updated, but not shown
    lc.setDigit(0,(byte)i,false);
    i--;
    delay(1000);
  }
  //when we switch the display on again we have already reached '1'
  lc.shutdown(0,false);
  lc.setDigit(0,(byte)i,false);
}


http://playground.arduino.cc/Main/LedControl

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
Mattie en Ice bedankt voor de tips, ik ga hier verder mee proberen. Dat kan wel even duren. Tnx.

Acties:
  • 0 Henk 'm!

  • Icekiller2k6
  • Registratie: Februari 2005
  • Laatst online: 20:53
ah ik bedenk me juist.. als je toch zoiets wilt doen kun je beter iets doen zoals
C:
1
2
3
int duizendtal=random(1);
int honderdtal=random(9);
//

dat is sneller denk ik, de code die ik gaf is een leuk "school" voorbeeld van hoe je een integer value kunt splitsen maar zoiets zou je nooit doen denk ik als je de keuze hebt (als het getal door iets anders gemaakt wordt kun je hier uiteraard wel voor opteren!)

MT Venus E 5KW (V151) P1 HomeWizard | Hackerspace Brixel te Hasselt (BE) - http://www.brixel.be | 9800X3D, 96GB DDR5 6000MHZ, NVIDIA GEFORCE 4090, ASRock X670E Steel Legend, Seasonic GX1000


Acties:
  • 0 Henk 'm!

  • Mattie112
  • Registratie: Januari 2007
  • Laatst online: 12-09 16:32
kitao schreef op woensdag 05 december 2012 @ 12:44:
Mattie en Ice bedankt voor de tips, ik ga hier verder mee proberen. Dat kan wel even duren. Tnx.
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
Here is a small example that prints an int value (-999..999) on a display with 4 digits. 

void printNumber(int v) {
    int ones;
    int tens;
    int hundreds;
    boolean negative;   

    if(v < -999 || v > 999) 
       return;
    if(v<0) {
        negative=true;
        v=v*-1;
    }
    ones=v%10;
    v=v/10;
    tens=v%10;
    v=v/10;
    hundreds=v;         
    if(negative) {
       //print character '-' in the leftmost column 
       lc.setChar(0,3,'-',false);
    }
    else {
       //print a blank in the sign column
       lc.setChar(0,3,' ',false);
    }
    //Now print the number digit by digit
    lc.setDigit(0,2,(byte)hundreds,false);
    lc.setDigit(0,1,(byte)tens,false);
    lc.setDigit(0,0,(byte)ones,false);
}

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


Acties:
  • 0 Henk 'm!

  • almightyarjen
  • Registratie: Maart 2002
  • Laatst online: 22:38

almightyarjen

When does the hurting stop?

frickY schreef op woensdag 05 december 2012 @ 11:51:
[...]

Wil je het perse software-matig oplossen?
Met een wormwiel zou je het doordraaien moeten kunnen voorkomen.
Die constructie heb ik inderdaad al. Het probleem is dat er intern in de NXT motor teveel tandwielen zitten die de "massa" geven. Na wat onderzoek blijkt dat Lego zelf ook tegen dit probleem is aangelopen en de motor naar een positie stuurt, een overshoot heeft en dan corrigeert. Ik heb het inmiddels opgelost, alleen is de oplossing te traag voor de toepassing waar ik het voor wil gebruiken...
kitao schreef op woensdag 05 december 2012 @ 12:17:
[...]

Nee, daar was ik ook al achter. Maar even graag een hintje in grote lijnen, hoe los je dit op ?
Ik krijg bijvoorbeeld 1234 als random number op de monitor, hoe hak je die in 4 stukjes zodat ieder cijfer op zn eigen 7-segment display terecht komt ?
En ik merk erbij op, als dit gecompliceerd is laat dan maar gaan, dit is geen vraag om even iets voor mij te laten programmeren, dan had ik maar les moeten nemen.
Als ik eenmaal de 4 cijfers heb van dit getal dan weet ik zelf hoe ze op de display te krijgen.
In je code worden de te weergeven getallen berekend. Als je hier ipv de berekening een random getal laat genereren zou het volgens mij moeten werken. Dus op de plaatsen waar
hourones
hourtens
minuteones
minuteones
tenths
secones
worden berekend zet jij een random nummer neer. bijvoorbeeld:
code:
1
hourones = random (10);  //random nummer van 0 - 9

Patreon | Main Youtube | Work In Progress Youtube


Acties:
  • 0 Henk 'm!

  • Dysan
  • Registratie: December 2003
  • Niet online
Even een arduino newbie vraag, ik heb een beveiligings camera waar ik een seriele aansluiting op heb.
De camera kan strings sturen en ontvangen op deze poort.
is een arduino bord een oplossing om meerder i/o poorten te genereren ? dus bijvoorbeeld 5 relais aansturen vanuit de camera die op de arduino zijn aangesloten?, of 5 inputs (bewegingsmelders/deurcontaten) die een serieel commando naar de camera kunnen sturen ?

Im Not A Vacuum Cleaner, Thats DysOn


Acties:
  • 0 Henk 'm!

  • Bloodhoundje
  • Registratie: September 2003
  • Laatst online: 23:59
Ook maar even een kleine post doen, alweer tijdje in dienst (3-4 maanden) mijn Numitron klok met een atmega 328 als hart die de arduino bootloader draait:

Verplichtte binnenkant:
Afbeeldingslocatie: https://lh4.googleusercontent.com/-7p9YBjVvcgI/UL4m8HzhpTI/AAAAAAAAAfM/fb9t2-0p1Vc/s912/IMG_3925.JPG

Verplichtte actieshot:
Afbeeldingslocatie: https://lh4.googleusercontent.com/-O6GEy469C-s/UL4m5wyaFAI/AAAAAAAAAec/lckw1OI5kf4/s912/IMG_3928.JPG

Rechts achter de buisjes zitten 3 schakelaars:
schakelaar 1: Alarm timer set / klok weergave / Alarrm actief+klokweergave
schakelaar 2: + uren / - uren
schakelaar 3: + minuten / - minuten

Met de potmeter kan de brightness van 0-100% worden geregeld (In plaats van pwm door de arduino te laten genereren heb ik dit gedaan dmv een 555je. :)

Acties:
  • 0 Henk 'm!

  • almightyarjen
  • Registratie: Maart 2002
  • Laatst online: 22:38

almightyarjen

When does the hurting stop?

cool :D Lekker ruim opgezette printplaat ook, heerlijk: daar hou ik van: zo min mogelijk klein gepiel :P

Patreon | Main Youtube | Work In Progress Youtube


Acties:
  • 0 Henk 'm!

  • Icekiller2k6
  • Registratie: Februari 2005
  • Laatst online: 20:53
Dysan schreef op woensdag 05 december 2012 @ 15:02:

is een arduino bord een oplossing om meerder i/o poorten te genereren ?
Kort beantwoord ja! :-) je moet wel zien .. de camera is waarschijnlijk RS232 dus heb je een max232 of soort gelijk nodig voor -12 & 12v om te vormen naar 0v & 5v.
de relays aansturen etc is geen probleem als je voor een atmega168 of 328 gaat dan heb je 5 analoge en 13 (-2 voor rx-tx als je dat zou willen) voor relays aan te sturen.
Om eerlijk te zijn ik snap niet waarom je in zo standalone dingen "arduino" gebruikt.. gebruik je de arduino bootloader..? of bedoel je gewoon dat je de arduino libraries gebruikt?

en nu wat ik echt wil zeggen vett.. me want :D pcb ontwerp? ;-) & kostprijs?

[ Voor 7% gewijzigd door Icekiller2k6 op 05-12-2012 19:16 ]

MT Venus E 5KW (V151) P1 HomeWizard | Hackerspace Brixel te Hasselt (BE) - http://www.brixel.be | 9800X3D, 96GB DDR5 6000MHZ, NVIDIA GEFORCE 4090, ASRock X670E Steel Legend, Seasonic GX1000


Acties:
  • 0 Henk 'm!

  • kitao
  • Registratie: Juli 2012
  • Laatst online: 05-09 16:01
Verwijderd schreef op woensdag 05 december 2012 @ 11:51:
Vraagje: Ik wil mijn Arduino 2560 programmeren via ISP in plaats van de USB-poort.
Later wil ik ook de bootloader vervangen dus moet ik zowieso een ISP programmer hebben.
Welke programmer kan ik daar voor gebruiken? Ik wil hem niet alleen gebruiken met de
Arduino software. Maar ook met Atmel Studio 6. Ik zag een dingetje van Polulu. Maar
rijst al gauw de vraag, werkt dat wel. Wat gebruiken jullie?
Je kunt er ook eén zelf bouwen zag ik ?
Sorry, ik heb hier echt geen verstand van mede daarom ook wi ik jouw post weer even onder de aandacht brengen.
http://www.ikalogic.com/i...ming-isp-for-atmel-chips/

===============

En complimenten voor die klok hierboven, echt een kunstwerk. :)

Acties:
  • 0 Henk 'm!

  • mad_max234
  • Registratie: September 2003
  • Laatst online: 07-02 11:09
AVRISP MKII clone werken erg goed, leuke is dat de atmega162-16au vanaf de fabriek al bootloader bevat en je dus geen kip en ei verhaal hebt, je heb dus geen porgrammer nodig om deze programmer te maken. :)

http://tom-itx.dyndns.org...ii/USBTiny_Mkii_index.php
http://www.fourwalledcubicle.com/AVRISP.php

Daarbij is het ook een PDI programmer waarmee je Xmega kan programeren. Programmer is gebaseert op fufa en is ook opgenomen in het fufa project.

Buffer ic om 3,3v logic te schakelen kan je ook vervangen door twee simpele zeners van 3.6v, heb ik ook gedaan op de siganaal lijnen van pdi omdat xmega 3.3v zijn en atmega van de programmer op 5v moet draaien in verband met de usb. Als je pdi niet gebruikt is het helemaal niet van belang, paar weerstandjes op de datalijnen is voor de spi al genoeg. Werkt hier al klein jaartje prima met alle soorten avr's, tiny's, mega en xmega's.

En anders kan je je arduino ook nog gebruiken, er zijn spi library's beschikbaar.

Edit/
Weet dat je de atmega162-16au kan je onder andere hier krijgen, lage verzendkosten. Heb verder niet goed gezocht of ze nog door andere shops worden aangeboden tegen lagere prijs, zul je zelf even moeten uitzoeken.
http://smdshop.nl/product...=27_28_77&products_id=858

Edit/
Oja avrstudio ondersteunt hem, je kan dus via avrstudio gelijk je project uploaden. Word gezien als een officiële atmel programmer. :)

[ Voor 17% gewijzigd door mad_max234 op 05-12-2012 20:34 ]

-Andere hobby- -


Acties:
  • 0 Henk 'm!

  • kitao
  • Registratie: Juli 2012
  • Laatst online: 05-09 16:01
Om even terug te komen op die RNG, (random no. generator) :
Om dit te proberen leek me handigst om met 1 cijfer te beginnen en toen zag ik ineens dat je dit gewoon ook 4 maal kunt doen.
Dit is mijn code daarvoor dat het getal én op de monitor zet én op een 4-digit-display.
Voordeel : ik hoef dan een 4-cijferig getal niet te gaan kraken in 4 aparte onderdelen 8)
C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#include "LedControl.h" //  need the library
LedControl lc=LedControl(12,11,10,1); // lc is our object
// pin 12 is connected to the MAX7219 pin 1
// pin 11 is connected to the CLK pin 13
// pin 10 is connected to LOAD pin 12
// 1 as we are only using 1 MAX7219
long a;
long b;
long c;
long d;
void setup()
{
  // the zero refers to the MAX7219 number, it is zero for 1 chip
  lc.shutdown(0,false);// turn off power saving, enables display
  lc.setIntensity(0,8);// sets brightness (0~15 possible values)
  lc.clearDisplay(0);// clear screen
  Serial.begin(9600);

  // if analog input pin 0 is unconnected, random analog
  // noise will cause the call to randomSeed() to generate
  // different seed numbers each time the sketch runs.
  // randomSeed() will then shuffle the random function.
  randomSeed(analogRead(0));
}
void loop()
{
  // genereer 4 x a random number from 0 to 9 en zet dit op de monitor
  a = random(10);
  b=random(10);
  c = random(10);
  d=random(10);
  Serial.print(a);  
  Serial.print(b);
  Serial.print(c);  
  Serial.println(d);
  delay(2000); 
//zet het getal van de monitor op een 4-digit display
lc.setDigit(0,3,a,false);
lc.setDigit(0,2,b,false);
lc.setDigit(0,1,c,false);
lc.setDigit(0,0,d,false); 
//maak het display weer leeg
delay(1000);
lc.clearDisplay(0);
delay(1000);

}

Overigens ben ik wel van plan de codes die hiervoor zijn geplaatst nog even door te nemen waarvoor veel dank.

edit: in hoeverre de lage nummers zoals 0013 hiermee aan bod komen valt te bezien, dat zal wel een minpuntje zijn op deze manier.
edit2: valt reuze mee trouwens, net de monitor teruggekeken en zelfs 0004 is voorbij gekomen :)
Wat denken jullie, zal ik deze code op het arduino-platform zetten met de titel :
max7219/7221 random number generator display ?
Of op youtube ? :+

[ Voor 8% gewijzigd door kitao op 05-12-2012 22:22 ]


Acties:
  • 0 Henk 'm!

Verwijderd

kitao schreef op woensdag 05 december 2012 @ 19:59:
[...]

Je kunt er ook eén zelf bouwen zag ik ?
Sorry, ik heb hier echt geen verstand van mede daarom ook wi ik jouw post weer even onder de aandacht brengen.
http://www.ikalogic.com/i...ming-isp-for-atmel-chips/

===============

En complimenten voor die klok hierboven, echt een kunstwerk. :)
Ik zag in het Arduino programma dat hier ook software voor was.
Ga het daar eerst eens mee proberen (heb boardjes in overvloed).
Maar terzijde, een losse USB-programmer lijkt mij wel handiger.

Ja die klok is ook mooi. Zeker met die buisjes. Meende dat ze
in Oost-Azie (weer) worden gemaakt. Lekker ruim opgezette
print ook.

Acties:
  • 0 Henk 'm!

  • Bloodhoundje
  • Registratie: September 2003
  • Laatst online: 23:59
Icekiller2k6 schreef op woensdag 05 december 2012 @ 19:15:
[...]
Om eerlijk te zijn ik snap niet waarom je in zo standalone dingen "arduino" gebruikt.. gebruik je de arduino bootloader..? of bedoel je gewoon dat je de arduino libraries gebruikt?

en nu wat ik echt wil zeggen vett.. me want :D pcb ontwerp? ;-) & kostprijs?
Ik gebruik alleen de bootloader van de arduino. Is lekker lui programmeren :) , PCB ontwerp heb ik niet. Alles opgebouwd uit mijn hoofd. Kan wel binnenkort even een schema ervan uitwerken.
Kostprijs is hoger uitgevallen dan geplanned.

De buishouders zijn eigenlijk aviation connectoren, bovenkant eraf gefreesd. Waren 3€/stuk. Heb alleen gezien dat ze nu per 6 op DX gaan voor 8$ (http://dx.com/p/diy-16mm-...ilver-5-piece-pack-134105).
buisjes komen van ebay. (http://www.ebay.com/itm/I...ain_0&hash=item5adec00f6a)
Behuizing custom made, voor 50€ aan zwart plexiglas gekocht, laten uitfrezen door een vriend en met elkaar verlijmd Hierna gladgeschuurd.


Ik raad aan bij de sockets, ik heb de 8 pin variant gebruikt omdat ik geen 9 kon vinden toen ik de klok bouwde, op DX verkopen ze ook de 9 pins variant. Neem die! Ik kan op dit moment de punt niet aansturen op de buisjes. 1 pin te weinig :P.
En hiernaast gewoon het standaard electronica grut:

atmega328
ne555
4x HC595 shiftregister
DS1307 RTC chip
4 numitrons
zwik weerstanden en diodes (Omdat dit geen LED segmenten zijn krijg je anders een bleeding effect over de andere gloeidraaiden. Diodes zijn dus een must met deze tubes).

Denk al met al dat ik rond de 80 tot 100€ ben kwijtgeweest hieraan :)

[ Voor 15% gewijzigd door Bloodhoundje op 06-12-2012 13:42 ]


Acties:
  • 0 Henk 'm!

  • mcDavid
  • Registratie: April 2008
  • Laatst online: 09-09 17:48
Technokiddy schreef op donderdag 06 december 2012 @ 13:39:
[...]


Ik gebruik alleen de bootloader van de arduino. Is lekker lui programmeren :) , PCB ontwerp heb ik niet. Alles opgebouwd uit mijn hoofd. Kan wel binnenkort even een schema ervan uitwerken.
Precies, zo heb ik het ook gedaan met mijn binaire klok. Al heb ik een complete arduino gebruikt. Uiteindelijk heb je ook een stabiele voeding nodig en wil je gewoon een USB-aansluiting erop, en kom je er op uit dat gewoon een Arduino Nano erop zetten het makkelijkst is. Ik heb 'm op pinheaders op de achterkant gezet zodat je 'm er ook af kunt trekken, is het nog een "feature" ook.
Kostprijs is hoger uitgevallen dan geplanned.

Behuizing custom made, voor 50€ aan zwart plexiglas gekocht, laten uitfrezen door een vriend en met elkaar verlijmd Hierna gladgeschuurd.
Waar heb je dat vandaan dan? Ik had op bouwplastics.nl besteld en dat viel best mee qua prijs.
zwik weerstanden en diodes (Omdat dit geen LED segmenten zijn krijg je anders een bleeding effect over de andere gloeidraaiden. Diodes zijn dus een must met deze tubes).
Hoezo dat? Je hoeft ze toch niet te multiplexen als ze allemaal aan hun eigen shiftregister hangen?

Acties:
  • 0 Henk 'm!

  • Bloodhoundje
  • Registratie: September 2003
  • Laatst online: 23:59
mcDavid schreef op donderdag 06 december 2012 @ 15:35:
[...]
Precies, zo heb ik het ook gedaan met mijn binaire klok. Al heb ik een complete arduino gebruikt. Uiteindelijk heb je ook een stabiele voeding nodig en wil je gewoon een USB-aansluiting erop, en kom je er op uit dat gewoon een Arduino Nano erop zetten het makkelijkst is. Ik heb 'm op pinheaders op de achterkant gezet zodat je 'm er ook af kunt trekken, is het nog een "feature" ook.


[...]
Waar heb je dat vandaan dan? Ik had op bouwplastics.nl besteld en dat viel best mee qua prijs.

[...]

Hoezo dat? Je hoeft ze toch niet te multiplexen als ze allemaal aan hun eigen shiftregister hangen?
Ik heb een variable input van 6-12 volt die erop mag. Vond ik zelf handiger ook voor als ik in de toekomst een andere adapter erbij pak, ik heb mijn plexiglas ook bij bouwplastic vandaan, 5mm dik plexiglas en een hele grote plaat. (heb er ook veel restmateriaal van over) De klok is opgebouwd uit 7 op elkaar gelijmde raamwerken met een deksel en onderplaat.

Je hoeft niet te multiplexen maar je hebt een common draad aan de tube. je krijgt lekspanning door de andere draden heen als je 2 of meer segmenten in gebruik hebt. Resulteert dat er andere segmenten zacht mee beginnen op te lichten. door een simpele diode te plaatsen bij elk segment ga je dit effect tegen :).

Acties:
  • 0 Henk 'm!

  • mcDavid
  • Registratie: April 2008
  • Laatst online: 09-09 17:48
De arduino nano mag je ook met 6-12 volt voeden. Al had ik gewoon een USB-adaptertje eraan.
En ja ik had mijn plexiglas precies op maat besteld. Ik kan nog een klok maken (ga ik doen ook) en dan is het op.

Acties:
  • 0 Henk 'm!

  • Bloodhoundje
  • Registratie: September 2003
  • Laatst online: 23:59
mcDavid schreef op donderdag 06 december 2012 @ 17:24:
De arduino nano mag je ook met 6-12 volt voeden. Al had ik gewoon een USB-adaptertje eraan.
En ja ik had mijn plexiglas precies op maat besteld. Ik kan nog een klok maken (ga ik doen ook) en dan is het op.
Alleen trekt de regulator op jouw arduino nano het niet als hij ook nog de tubes moet voorzien van prik. Ik zit met de brightness op max met een gebruik van +/-150ma per tube. dan zit je al rond de 600. midden segment zijn 2 gloeilampjes. die stoken ook 75ma/stuk weg zonder problemen. zitten we op 750ma. Ik heb expres geen 7805 gebruik omdat deze met alleen een koelblokje in een gesloten ruimte toch erg warm wordt.

Acties:
  • 0 Henk 'm!

  • mr_obb
  • Registratie: Juni 2001
  • Laatst online: 01-09 14:15

mr_obb

Lakse Perfectionist

Technokiddy schreef op donderdag 06 december 2012 @ 18:32:
[...]


Alleen trekt de regulator op jouw arduino nano het niet als hij ook nog de tubes moet voorzien van prik. Ik zit met de brightness op max met een gebruik van +/-150ma per tube.
Is de opgegeven 22mA dan per gloeidraadje?

Acties:
  • 0 Henk 'm!

Verwijderd

Technokiddy schreef op donderdag 06 december 2012 @ 13:39:
[...]
Kostprijs is hoger uitgevallen dan geplanned.
Dit is meestal zo met iets zelf bouwen. Maar dan heb je wel
een eigen gemaat iets. Om bij mezelf kosten te besparen doe
ik ook aan ' reverse engeinering'. Oftwel, iets goedkoop halen
op eBay of DX en daarna zo vakkundig slopen dat het bij mij
in het ontwerp past.

Acties:
  • 0 Henk 'm!

  • Bloodhoundje
  • Registratie: September 2003
  • Laatst online: 23:59
mr_obb schreef op donderdag 06 december 2012 @ 20:18:
[...]

Is de opgegeven 22mA dan per gloeidraadje?
Correct, per segment en niet voor de gehele buis. :)

Acties:
  • 0 Henk 'm!

  • mr_obb
  • Registratie: Juni 2001
  • Laatst online: 01-09 14:15

mr_obb

Lakse Perfectionist

Ik wilde twee van die lampjes aansluiten op een kleine accu met een zonnepaneeltje (een gesloopte solar charger voor een telefoon). Ik zal er even op moeten letten dat hij voldoende stroom kan leveren. De meeste van die accu's hebben een 1200 of 1500 mAh, dus dat is voldoende om de lampjes een paar uur te laten branden.

Acties:
  • 0 Henk 'm!

Verwijderd

Ik ben bezig met een ehternet shield, en bij een testprogramma geeft de IDE bij het compilen aan:

Estimated used SRAM memory: 1.883 bytes (of a 2048 byte maximum)
Warning: Large amount of SRAM memory used. Consider using PROGMEM or F("text") macro to reduce ram usage

het programma werkt dus wel gewoon.

het gaat om deze 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
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
// A simple web server to turn 2 LED on or off

#include "etherShield.h"
#include "ETHER_28J60.h"

int outputPin = 6; // LED1 to pin 6
int anotherOutputPin = 7; // LED2 to pin 7

static uint8_t mac[6] = {
  0x54, 0x55, 0x58, 0x10, 0x00, 0x24};   // this just needs to be unique for your network, 

static uint8_t ip[4] = {
  192, 168, 1, 15}; // IP address for the webserver

static uint16_t port = 80; // Use port 80 - the standard for HTTP

ETHER_28J60 e;

void setup()
{ 
  e.setup(mac, ip, port);
  pinMode(outputPin, OUTPUT);
  pinMode(anotherOutputPin, OUTPUT);
}

void loop()
{
  char* params;
  if (params = e.serviceRequest())
  {
    //strcpy_P(buffer, (char*)pgm_read_word(&(string_table[0])));
    //e.print(buffer);
    e.print("<h1><a href='/?led1=off&led2=off'>Arduino Web Remote</a></h1>");
    //strcpy_P(buffer, (char*)pgm_read_word(&(string_table[1])));
    if (strcmp(params, /*buffer*/"?led1=on&led2=off") == 0)
    {
      digitalWrite(outputPin, HIGH);
      digitalWrite(anotherOutputPin, LOW);
      e.print("<a href='?led1=off&led2=off'><button style='border: 1px solid #ff0000; border-left: 10px solid #ff0000' type='button'>LED1 IS ON</button></a><a href='?led1=on&led2=on'><br/><button style='border: 1px solid #000; border-left: 10px solid #000' type='button'>LED2 IS OFF</button></a>");
    }
    else if (strcmp(params, "?led1=off&led2=on") == 0)
    {
      digitalWrite(outputPin, LOW);
      digitalWrite(anotherOutputPin, HIGH);
      e.print("<a href='?led1=on&led2=on'><button style='border: 1px solid #000; border-left: 10px solid #000' type='button'>LED1 IS OFF</button></a><a href='?led1=off&led2=off'><br/><button style='border: 1px solid #ff0000; border-left: 10px solid #ff0000' type='button'>LED2 IS ON</button></a>");
    }
    else if (strcmp(params, "?led1=off&led2=off") == 0)
    {
      digitalWrite(outputPin, LOW);
      digitalWrite(anotherOutputPin, LOW);
      e.print("<a href='?led1=on&led2=off'><button style='border: 1px solid #000; border-left: 10px solid #000' type='button'>LED1 IS OFF</button></a><a href='?led1=off&led2=on'><br/><button style='border: 1px solid #000; border-left: 10px solid #000' type='button'>LED2 IS OFF</button></a>");
    }
    else if (strcmp(params, "?led1=on&led2=on") == 0)
    {
      digitalWrite(outputPin, HIGH);
      digitalWrite(anotherOutputPin, HIGH);
      e.print("<a href='?led1=off&led2=on'><button style='border: 1px solid #ff0000; border-left: 10px solid #ff0000' type='button'>LED1 IS ON</button></a><a href='?led1=on&led2=off'><br/><button style='border: 1px solid #ff0000; border-left: 10px solid #ff0000' type='button'>LED2 IS ON</button></a>");
    }
    e.respond();
  }
}


ik heb geprobeerd om de rcswitch library te gebruiken in deze code maar dan geeft de arduino aan dat er teveel SRAM usage is en dat ik moet gaan kijken naar PROGMEM:

http://www.arduino.cc/en/Reference/PROGMEM

Onderaan die pagina staat een voorbeeld hoe je arrays of strings op kunt slaan in PROGMEM en hoe je die op kunt halen als string naar je ram.

als ik dat in mijn programma test (regel voor regel) werkt het bij de eerste 2 strings in het programma, maar bij de 3e werkt de webpagina niet meer, je kunt hem soms wel nog openen maar als je ergens op klikt dan blijft hij aangeven aanvraag wordt verstuurd.

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
// A simple web server to turn 2 LED on or off

#include "etherShield.h"
#include "ETHER_28J60.h"

#include <avr/pgmspace.h>
prog_char string_0[] PROGMEM = "<h1><a href='/?led1=off&led2=off'>Arduino Web Remote</a></h1>";   // "String 0" etc are strings to store - change to suit.
prog_char string_1[] PROGMEM = "?led1=on&led2=off";
prog_char string_2[] PROGMEM = "<a href='?led1=off&led2=off'><button style='border: 1px solid #ff0000; border-left: 10px solid #ff0000' type='button'>LED1 IS ON</button></a><a href='?led1=on&led2=on'><br/><button style='border: 1px solid #000; border-left: 10px solid #000' type='button'>LED2 IS OFF</button></a>";
prog_char string_3[] PROGMEM = "String 3";
prog_char string_4[] PROGMEM = "String 4";
prog_char string_5[] PROGMEM = "String 5";

PROGMEM const char *string_table[] =       // change "string_table" name to suit
{   
  string_0,
  string_1,
  string_2,
  string_3,
  string_4,
  string_5 };

char buffer[100];    // make sure this is large enough for the largest string it must hold

int outputPin = 6; // LED1 to pin 6
int anotherOutputPin = 7; // LED2 to pin 7

static uint8_t mac[6] = {
  0x54, 0x55, 0x58, 0x10, 0x00, 0x24};   // this just needs to be unique for your network, 

static uint8_t ip[4] = {
  192, 168, 1, 15}; // IP address for the webserver

static uint16_t port = 80; // Use port 80 - the standard for HTTP

ETHER_28J60 e;

void setup()
{ 
  e.setup(mac, ip, port);
  pinMode(outputPin, OUTPUT);
  pinMode(anotherOutputPin, OUTPUT);
}

void loop()
{
  char* params;
  if (params = e.serviceRequest())
  {
    strcpy_P(buffer, (char*)pgm_read_word(&(string_table[0])));
    e.print(buffer);
    strcpy_P(buffer, (char*)pgm_read_word(&(string_table[1])));
    if (strcmp(params, buffer) == 0)
    {
      digitalWrite(outputPin, HIGH);
      digitalWrite(anotherOutputPin, LOW);
      strcpy_P(buffer, (char*)pgm_read_word(&(string_table[2])));
      e.print(buffer);
      //e.print("<a href='?led1=off&led2=off'><button style='border: 1px solid #ff0000; border-left: 10px solid #ff0000' type='button'>LED1 IS ON</button></a><a href='?led1=on&led2=on'><br/><button style='border: 1px solid #000; border-left: 10px solid #000' type='button'>LED2 IS OFF</button></a>");
    }
    else if (strcmp(params, "?led1=off&led2=on") == 0)
    {
      digitalWrite(outputPin, LOW);
      digitalWrite(anotherOutputPin, HIGH);
      e.print("<a href='?led1=on&led2=on'><button style='border: 1px solid #000; border-left: 10px solid #000' type='button'>LED1 IS OFF</button></a><a href='?led1=off&led2=off'><br/><button style='border: 1px solid #ff0000; border-left: 10px solid #ff0000' type='button'>LED2 IS ON</button></a>");
    }
    else if (strcmp(params, "?led1=off&led2=off") == 0)
    {
      digitalWrite(outputPin, LOW);
      digitalWrite(anotherOutputPin, LOW);
      e.print("<a href='?led1=on&led2=off'><button style='border: 1px solid #000; border-left: 10px solid #000' type='button'>LED1 IS OFF</button></a><a href='?led1=off&led2=on'><br/><button style='border: 1px solid #000; border-left: 10px solid #000' type='button'>LED2 IS OFF</button></a>");
    }
    else if (strcmp(params, "?led1=on&led2=on") == 0)
    {
      digitalWrite(outputPin, HIGH);
      digitalWrite(anotherOutputPin, HIGH);
      e.print("<a href='?led1=off&led2=on'><button style='border: 1px solid #ff0000; border-left: 10px solid #ff0000' type='button'>LED1 IS ON</button></a><a href='?led1=on&led2=off'><br/><button style='border: 1px solid #ff0000; border-left: 10px solid #ff0000' type='button'>LED2 IS ON</button></a>");
    }
    e.respond();
  }
}


als ik van regel 57 en 58 commentaar maakt en 59 niet meer dan werkt het wel gewoon weer. Ik heb ook al geprobeerd om die eerste stringen gewoon te laten staan en alleen de derde op te halen uit de array maar ook dat werkt niet.

Doe ik iets fout met het ophalen uit de array? of weet iemand misschien een andere manier om het gebruik van SRAM te verminderen?


* is ondertussen opgelost, weet niet wat het probleem was maar denk iets met verkeerde haakjes ofzo want na een aantal keer opnieuw proberen ging het werken zonder dat ik zelf door heb wat er nu anders is als toen ik het probleem hier plaatste

Acties:
  • 0 Henk 'm!

  • Mattie112
  • Registratie: Januari 2007
  • Laatst online: 12-09 16:32
Hallo allemaal! Ik heb weer is een vaag probleem :)

Zie onderstaande afbeelding:

Afbeeldingslocatie: http://upload.mattie-systems.nl/uploads/11919-untitled_sketch_bb.jpg

Het 9v blok is eigenlijk 12volt maar dat zou niet uit moeten maken.

Ik heb dus een relays (http://www.ebay.com/itm/2..._trksid=p3984.m1497.l2649) welke ik gebruik om een electromagneet te activeren.

Door "low" te sturen op de arduino wordt het relay geactiveerd en kan er stroom lopen tussen de - en de + van de losse batterij.

Het 'activeren' van het relay gaat goed: de magneet wordt geactiveerd maar zodra ik hem DEactiveer 'crashed' de arduino (hij reset gewoon).

Ik heb ook al geprobeerd om de grounds te verbinden maar dit heeft geen effect.

Iemand enig idee hoe het zit?

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
Heb je al geprobeerd het breadboard extern van 5V te voorzien, dus niet vanaf de uno mega ?

@post hierna
Geen idee of het werkt mattie, ik verzin maar wat. :$

[ Voor 32% gewijzigd door kitao op 10-12-2012 15:14 ]


Acties:
  • 0 Henk 'm!

  • Mattie112
  • Registratie: Januari 2007
  • Laatst online: 12-09 16:32
Nee en dat is ook niet echt een optie aangezien het een rijdende robot is :p

Maargoed opzich kan ik het wel ff testen als ik thuis ben!

edit:
Zucht.... hetzelfde probleem als een tijdje geleden toen ik er ook al niks van snapte

mn batterij is gewoon leeg :p Ik had het ook via USB getest maar ik was vergeten dat ik "vIN" had gepakt en dus alsnog via de batterij de stroom kreeg :p

edit2:
Is er eigenlijk een manier om te zien hoeveel volt er 'in' de arduino gestopt wordt?

[ Voor 57% gewijzigd door Mattie112 op 10-12-2012 16:36 ]

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


Acties:
  • 0 Henk 'm!

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

Dr.Roelski

Walk on ....

Mattie112 schreef op maandag 10 december 2012 @ 14:54:
Nee en dat is ook niet echt een optie aangezien het een rijdende robot is :p

Maargoed opzich kan ik het wel ff testen als ik thuis ben!

edit:
Zucht.... hetzelfde probleem als een tijdje geleden toen ik er ook al niks van snapte

mn batterij is gewoon leeg :p Ik had het ook via USB getest maar ik was vergeten dat ik "vIN" had gepakt en dus alsnog via de batterij de stroom kreeg :p

edit2:
Is er eigenlijk een manier om te zien hoeveel volt er 'in' de arduino gestopt wordt?
5Volt (via USB, of via spanningsregelaar)

Gelijk maar je andere vraag beantwoorden:
Het 'activeren' van het relay gaat goed: de magneet wordt geactiveerd maar zodra ik hem DEactiveer 'crashed' de arduino (hij reset gewoon).

Ik heb ook al geprobeerd om de grounds te verbinden maar dit heeft geen effect.

Iemand enig idee hoe het zit?
Dit komt waarschijnlijk doordat de relais bij het uitschakelen heel kort een negatieve spanning op je arduino zet. Om dit te voorkomen moet je een diode in sper richting over je arduino uitgang zetten (oftewel: op je relais). Als de magneet nu uitschakeld en er een omgekeerde spanning op komt te staan wordt deze door de diode kortgesloten.

Acties:
  • 0 Henk 'm!

  • Mattie112
  • Registratie: Januari 2007
  • Laatst online: 12-09 16:32
Ja ik snap dat het 5V is maar ik wil graag meten hoeveel volt er daadwerkelijk in gaat zodat ik een berichtje kan laten zien als de accu (bijna) leeg is ;)

Dat het relais de arduino laat resetten heb ik nu geen last meer van, het is een relaymodule dus geen idee of het er standaard al op zit ;p Ik zal is kijken tussen mijn onderdelen of ik wat heb liggen anders dan kijk ik hoelang het zo goed blijft gaan.

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

Pagina: 1 ... 22 ... 96 Laatste