Electronisch Jurerings Systeem

Hey MAS3,
thanks voor het voorstel
nu staat hij op 0x20 (heb ik via een eerdere klant, op de pagina van de dealer kunnen uitvissen), in tegenstelling tot de 0x27 die de dealer zelf aangeeft.

ik heb er wel geen datasheet voor gekregen, maar mogelijks heeft iemand hier iets aan
http://www.aliexpress.com/snapshot/6010197527.html

het is echt een zalig, mooi helder display, top stukje hardware
(ook voor iemand die nieuw is in dit alles, zoals ik, is het een eitje om het aan de praat te krijgen)

ik heb eens op het bordje gekeken op de achterzijde (die LM1602-IIC-TWI) maar ik vind daar nergens iets op wat er op zou wijzen dat je een adres kan instellen...

maar wie ben ik om daar al zo snel een oordeel over te vellen natuurlijk :*

maar als het mogelijk zou zijn, dan ga ik er echt voor gaan, dat wel.

Thanks,

Grtz,
Yves

Dat is dus inderdaad zo'n backpack.
Die zijn er in veel uitvoeringen die er ook allemaal op het eerste gezicht hetzelfde uitzien.
De foto's laten het niet echt goed zien, maar er zijn geen soldeerverbindingen die je kunt verwijderen om het adres aan te passen.
Om daar helemaal zeker van te zijn, zou ik eigenlijk een goede close up foto moeten zien van dat kleine printje, en als je dat wil proberen is het altijd mogelijk om dat adres aan te passen door aan die chip te solderen.
Daar moet je wel een beetje voor geoefend zijn in het solderen, want das allemaal nogal klein.
Maar mogelijk is het zeker.

Hey MAS3,

hier ben ik terug, ik heb wat zitten rondloeren op het net voor zo'n instelbaar backpackje dat je vlot kan instellen op een ander adres.
nu heb ik er best wel een aantal modellen van zien voorbij komen, maar heel erg vaak staat niet of slechts gedeeltelijk aangegeven hoe en welke adressen je kan instellen.

zoals bvb:
http://www.aliexpress.com/item/1-pcs-IIC-I2C-TWI-SPI-Serial-Interface-Board-Module-Port-for-Arduino-1602LCD-Display-Drop/1397718097.html

kent er iemand een fabrikant of model die wel vlot te gebruiken is voor iemand die vrij nieuw is in deze materie?
ik heb zo het idee dat je met een dergelijk, instelbaar backpack echt wel een eind vooruit kan komen als je meerdere LCD 2004 modules bij elkaar wil zetten.

nu ben ik nog eventjes bezig met een paar andere zaken, maar na begin mei moet ik weer volle bak vooruit gaan doen aan het systeem. anderzijds laat dit natuurlijk toe dat ik intussen de juiste spullen kan bestellen :slight_smile:

Grtz,
Yves

check - Selectable i2c address? - Networking, Protocols, and Devices - Arduino Forum -

Hey Rob,

zoals zoveel maal voorheen, BEDANKT !
de uitleg van CrossRoads is meer dan voldoende om mij te overtuigen.

BTW, jij hebt in het verleden nog niet eens zoiets uitgeprobeerd of zo?

Grtz,
Yves

Hi Yves,
multiple displays gaat prima met I2C als de addressen verschillen. Je moet in je code wel opletten wat je waar neerzet.
Een omschrijvende naam per scherm werkt dan 10x beter dan lcd1 and lcd2. Dus gebruik bv rondetijdLCD en totaalDIsplay.
Dat helpt enorm voor de leesbaarheid.

Hi Rob,

ik heb eens een vraagje, deze week kwam m'n RF remote binnen.
http://www.aliexpress.com/snapshot/6085451055.html

als ik deze wil aansluiten moet ik dan met een pull-down resistor werken op de GND of een pull-up op de VCC?
want dit item is natuurlijk voorzien om een load te starten, of moet ik mij daar helemaal niets van aantrekken, en gewoon verbinden zoals door de fabrikant aangegeven op het schema die op de bovenstaande link ook te vinden is?

dan nog een vraagje, als ik van m'n ADK'tje de reset button op de MCU naar buiten wil brengen, doe ik dat dan gewoon via de RST pin? en dan naar GND of naar VCC met een pushbutton?

Grtz,
Yves

volgens het schema - http://arduino.cc/en/uploads/Main/Arduino_Uno_Rev3-schematic.pdf -
is de reset pin verbonden met 5V via een pull up. Dus voor reset zou je moeten connecten met GND.

als ik deze wil aansluiten moet ik dan met een pull-down resistor werken op de GND of een pull-up op de VCC?

Ik heb geen datasheet gezien, maar ik lees dat het een relay is, dus je moet het beschouwen als een schakelaar. Dus beide opties kunnen, en dan met digitalRead pin lezen

Thanks Rob !!

Hey allemaal,

M'n RF remote werkt schitterend :slight_smile: (Thanks Rob)

maar ik heb nu een nieuwe vraag:

m'n lichtjes werken pico bello als ik m'n RF op bvb D22 of zo aansluit, en bovendien ook van vrij ver > 50 meter

nu heb ik zo zitten denken dat het voor mijn progje beter zou uitkomen als ik de Arduino volledig reset dmv de RF remote.
dan worden alle variabelen terug gereset, en alles terug op 0 gezet.

gisteren heb ik wat zitten experimenteren naar aanleiding van Rob z'n post hierboven ivm met de reset functie dmv een gewone schakelaar (werkt eveneens prima uiteraard), maar toen ik probeerde om de RF Remote te gebruiken om op afstand te resetten, dan lukte dit niet.
Ik heb op de RF receiver een GND en een VCC (5volt) zitten, maar ook een uitgang, als de relais aangetrokken wordt door de RF bediening, die ook nog eens 5volt geeft.
Ik heb het Toggle model genomen, dus drukken is schakelen, lossen is ontschakelen.

Ik heb 2 combinaties geprobeerd, maar ik moet uiteraard steeds zien dat ik de GND en de VCC van de nodige spanning voorzie, anders werkt de receiver uiteraard niet.
als ik nu de derde draad (0Volt bij "uit" en 5volt bij geschakeld) op de RST, of op de GND van de µCU zet, dan lukt het me niet om de Arduino te resetten op die manier...

kan dit eigenlijk wel met dit soort schakeling? of zal ik vrede moeten nemen met een gewone toggle switch met 2 geleider aan RST en GND?

Grtz,
Yves

geen electroman , maar vaak helpt het als je een condensator eroverheen zet. Die zorgt dat het net wat voor vertraging.

(Lees het boek "practical electronics for inventors", voor alle electronica kennis die je ooit wil leren)

Waarom doe je niet gewoon een software reset?

Hi Nico,

goed idee, maar ben nog niet op het punt gekomen dat ik dat zo uit het hoofd kan programmeren :~

hoe doe je dit juist, of waar vind ik een leuke link voor zoiets?

Grtz,
Yves

optie 1:

#include <avr/wdt.h>
void software_Reboot()
{
  wdt_enable(WDTO_15MS);
  while(1)
  {
  }
}

optie 2:

void software_Reboot() {
	asm volatile ("  jmp 0");
}

Optie 1 schijnt de netste te zijn voor het wissen van de registers. Niet dat je met een Arduino sketch er veel last van zal hebben tenzij je erg op low-level zit.Geheugen lokaties worden allemaal keurig weer gewist/opgezet als bij een harde reset. Dit is namelijk de eerste stap die een programma uitvoert voordat de setup() wordt aangeroepen.

bij optie 2 lopen bv timers door en blijven interrupts bestaan.

hey,

ik heb eens een hardware vraagje :

mag ik eigenlijk een 5VDC en een GND rail aanleggen voor m'n projectje (alles komt uit één PSU van 5VDC/30Amp)?
op die manier hoop ik om alle GND's en VCC's samen te bundelen, en dan met twee 1,5mm² draden aan mijn PSU te verbinden.

de MCU krijgt z'n eten via een powerplug uit dezelfde PSU...
ik zou dus willen extra bedrading vermijden door bvb één lijn GND en één lijn VCC op een rail te zetten in de breakout box.
op die manier kan ik een aantal noodzakelijke verbindingen maken in de break-out-box ipv van in de MCU box (afstand ong. 10m bekabeling)

indien ik dit zou doen, loop ik dan het risico niet om meer zwevende in- of uitgangen te hebben?

Grtz,
Yves

Nope... Gewoon de GNDs aan elkaar en de VCC's idem. Je kan evt. een 100nF cap en een 100uF elco parallel zetten bij elke 5V en GND aansluiting om zodoende eventuele storing via de voeding aansluitingen van de ene print naar de andere te vermijden. Hoeft niet perse, maar kan geen kwaad.
1..5mm2 hoeft niet perse nodig te zijn. De voeding kan wel 30A afleveren, maar stroom neem je af. Niet omgekeerd. Dus als je de stromen meet per schakeling en optelt weet je de stroom. er zijn zat tabellen op het internet die aangeven hoe dik het draad echt moet wezen.

Hey,

ik heb een "debouncing" probleempje...

in het EJS systeem heb ik de fotocellen mooi aan het werk gekregen (gewoon de interne PULL-UP inschakelen, en als de cellen doorbroken worden dan krijg ik een "LOW" uitgang), ik heb de code als dusdanig moeten aanpassen, maar kom met wat "trial & error" ben ik er toch mooi geraakt.

ik ben nu perfect in staat om een tijdsopname te doen....met een bierviltje :slight_smile:

op zich best leuk, maar een bierviltje onderbreekt nooit de 2 rijen fotocellen tegelijk natuurlijk.

ik heb in feite iets nodig (soort debounce) waarmee ik de µCU duidelijk kan maken dat, als een rij cellen doorbroken wordt of beide rijen tegelijk (een doorsnee Border Collie is nu eenmaal langer dan zo'n 10cm :stuck_out_tongue: )
dat enkel de eerste waarneming telt, hierop werkt mijn code een aantal "vlaggen" af

maar doordat m'n fotocellen nog géén debouncing hebben, gebeuren alle waarnemingen zéér snel na elkaar :disappointed_relieved:

//---- Hieronder de routine bij een correcte start ----
/* 
sensorState1 is de waarde van sensorA => LOW bij doorbreken lichtstraal dus
S1 is een vlag die geswitched wordt om aan te duiden dat de hond richting toestel loopt,
deze vlag wordt hoog gezet bij het startsignaal
naarDeBox & naarGeleider zijn vlaggen voor aanduiding welke richting een hond net uitgaat, 
bij startsignaal worden die op LOW gezet
*/
     if (sensorState1 == LOW && S1 == HIGH && naarDeBox == LOW && naarGeleider == LOW) 
        {
        //verhinderen dat er meerdere tijden genomen worden van de 1ste hond!
        if (checkLoopTijd == LOW && Hond == 0)
           {
            neemTijd();                              // neem de tijd op, en verwerk die
            toonTijd();                               // berekenen de tijden en geef die weer op de display's
             checkLoopTijd = HIGH;      // zet de vlag om, om een tweede tijd te verhinderen
/* 
aantonen dat deze routine maar één maal doorlopen mag worden
hiertoe zetten we vlag S1 op hoog
*/
             S1 = LOW; 
          }
        }

     //---- Routine voor de sensor :  "FotoCelB" bij het door NAAR de box lopen
     if (sensorState2 == LOW && S1 == LOW && naarDeBox == LOW && naarGeleider == LOW) 
        {
         naarDeBox = HIGH; // de hond loopt nu voor de eerste maal door de tweede rij fotocellen, op 10cm van de eerste rij
         }
/*
hier is de hond onderweg naar het toestel om een bal op te halen, de meeste honden hebben hiervoor >= 4seconden nodig
maar hier zit het probleem net, de hond is zojuist door deze sensor gegaan, maar er volgt nog minimum 80cm lichaam na het
voor het eerst doorbreken van deze sensor
*/


//---- Routine voor de sensor :  "FotoCelB" bij het door NAAR de geleider
/* 
door mijn véél te lange honden  :P kom ik quasi ogenblikkelijk in deze routine terecht
waardoor ik een foutief beeld krijg van de tijden
*/

     // de Hond keert terug door de eerste rij fotocellen en was minimum 3,5 seconden onderweg
     if (sensorState2 == LOW && S1 == LOW && naarDeBox == HIGH && naarGeleider == LOW)
        {
         S1 = HIGH;
         naarDeBox = LOW;
         naarGeleider = HIGH;
         checkLoopTijd = LOW;
        }

//---- Routine voor de sensor :  "FotoCelA" bij het door NAAR de geleider
     if (sensorState1 == LOW && S1 == HIGH && naarDeBox == LOW && naarGeleider == HIGH)
        {
        if (checkLoopTijd == LOW && Hond == 0)
           {
            doeietsmettijden(); // verwerkt de data tot een bruikbaar geheel
             S1 = HIGH; // maak dat de volgende hond door kan komen
             naarDeBox = LOW;
             naarGeleider = LOW;
             checkLoopTijd = HIGH;
             Hond++;
          }
        }

ik heb al zitten proberen met de voorbeeld routine "Debounce", maar ik geraak er niet, omdat de ene hond al wat sneller door de sensors loopt dan de andere

hieronder wat ik probeerde :

//---- Routine voor de sensor :  "FotoCelB" bij het NAAR de box lopen
     if (sensorState2 == LOW && S1 == LOW && naarDeBox == LOW && naarGeleider == LOW) 
        {
        debounceTijdSensorB = millis();
        naarDeBox = HIGH;
        }

//---- Routine voor de sensor :  "FotoCelB" bij het NAAR de geleider lopen

     if (sensorState2 == LOW && S1 == LOW && naarDeBox == HIGH && naarGeleider == LOW) 
        {
        // 120 millis is ongeveer de lichaamslengte van een border collie op volle snelheid
        if ( (millis() - debounceTijdSensorB) >= 120) 
           {
           S1 = HIGH;
           naarDeBox = LOW;
           naarGeleider = HIGH;
           checkLoopTijd = LOW;
           }
        }

iemand een voorzetje voor mij?
ik heb me hier al een punthoofd op gezocht

Grtz,
Yves

EDIT : hieronder een link voor een klein progje om het flyballen visueel voor te stellen:
http://users.skynet.be/fd193453/FD/Stridani.zip

Is van een collega flyball club uit Tjechië :slight_smile:
Hierop kun je goed zien waarvoor het "debouncen" moet dienen.

Ik zou eens gaan kijken hoe men het debouncen doet bij encoders.
Daar ga je er van uit dat er eerst een contact verandert, en dan de andere, maar wel voordat de eerste weer terug veranderd is.
Met die encoders kan redelijk snel gedraaid worden, dus daar treden vergelijkbare problemen op als jij nu ondervind, lijkt me.