Arduino expert gezocht
35 berichten
• Pagina 3 van 4 • 1, 2, 3, 4
Re: Arduino expert gezocht
Natuurlijk, dat kan. Dat lijkt me een goede oplossing.
Eerst : int seconden = map( sensorValue, 0, 1013, 0, 60) ; // 0 tot 60
Daarna : int honderdsten_van_seconden = seconden * 100 ;
Of : unsigned long milliseconden = seconden * 1000 ; // dit kan ook
Kun je dit alvast doorlezen : https://www.arduino.cc/en/Tutorial/BlinkWithoutDelay.
Als je het niet begrijpt, dan is vijf keer doorlezen ook goed
Jouw display gebruikt de I2C bus, dat is niet zo snel.
Stel dat je de tijd op het display zet en dan 10 ms wacht. Als de tijd op het display zetten al een milliseconde duurt, dan gaat het scheef lopen.
In de Arduino draait een hardware timer. De timer vraag je op met millis(). Die tijd loopt goed, dus als je die tijd kunt gebruiken om op het display te zetten, dan klopt de tijd.
Eerst : int seconden = map( sensorValue, 0, 1013, 0, 60) ; // 0 tot 60
Daarna : int honderdsten_van_seconden = seconden * 100 ;
Of : unsigned long milliseconden = seconden * 1000 ; // dit kan ook
Kun je dit alvast doorlezen : https://www.arduino.cc/en/Tutorial/BlinkWithoutDelay.
Als je het niet begrijpt, dan is vijf keer doorlezen ook goed
Jouw display gebruikt de I2C bus, dat is niet zo snel.
Stel dat je de tijd op het display zet en dan 10 ms wacht. Als de tijd op het display zetten al een milliseconde duurt, dan gaat het scheef lopen.
In de Arduino draait een hardware timer. De timer vraag je op met millis(). Die tijd loopt goed, dus als je die tijd kunt gebruiken om op het display te zetten, dan klopt de tijd.
Advertisement
- Sander8511
- Berichten: 18
- Geregistreerd: 02 Nov 2018, 23:05
Re: Arduino expert gezocht
Thnx, ga ik even mee bezig.
Ik denk dat ik begrijp wat de milis functie inhoudt. Maar ik mis even de toepassing naar mijn project. Naar mijn idee heb ik pas iets met tijd te maken zodra de knop, na de safetyswitch, is ingedrukt(op het allerlaatst),namelijk aftellen van de daarvoor met potmeter ingestelde waarde. Of zie ik dit verkeerd??
Ik denk dat ik begrijp wat de milis functie inhoudt. Maar ik mis even de toepassing naar mijn project. Naar mijn idee heb ik pas iets met tijd te maken zodra de knop, na de safetyswitch, is ingedrukt(op het allerlaatst),namelijk aftellen van de daarvoor met potmeter ingestelde waarde. Of zie ik dit verkeerd??
Re: Arduino expert gezocht
Dat zie je goed
De link die je gaf (https://arduining.com/2012/03/01/rocket-launch-controller-simulated/) gebruikt millis() om te synchroniseren op 100 ms. Dat vind ik maar een beetje zo-zo. Ik zou liever millis() gebruiken om het te berekenen.
De link die je gaf (https://arduining.com/2012/03/01/rocket-launch-controller-simulated/) gebruikt millis() om te synchroniseren op 100 ms. Dat vind ik maar een beetje zo-zo. Ik zou liever millis() gebruiken om het te berekenen.
Re: Arduino expert gezocht
Een klein testje met millis() en een berekening: https://gist.github.com/Koepel/cae1f3d0f01e1b6285a4ac3c3548e2d2.
De constructie met millis() voor de count-down-tijd is onafhankelijk van de tweede constructie met millis() die het display of de seriële monitor ververst.
Misschien is het mogelijk om jouw display op volle snelheid te updaten. Dan wordt de code kleiner.
De constructie met millis() voor de count-down-tijd is onafhankelijk van de tweede constructie met millis() die het display of de seriële monitor ververst.
Misschien is het mogelijk om jouw display op volle snelheid te updaten. Dan wordt de code kleiner.
- Sander8511
- Berichten: 18
- Geregistreerd: 02 Nov 2018, 23:05
Re: Arduino expert gezocht
Ik heb het testje uitgevoerd en het werkt met deze code:
Misschien een gekke vraag, maar wat zegt het dan nu?
- Code: Alles selecteren
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_LEDBackpack.h>
Adafruit_7segment matrix = Adafruit_7segment();
const int buttonPin = 2;
const long startCount = 5000; // start countdown with 5 seconds
unsigned long previousMillisCounter;
bool counting = false;
// An extra timer with millis to update a display.
// For a LCD display, the interval can be 200 ms.
// For the serial monitor, the interval can also be 200 ms.
// For a 7-segment display, the update can be done
// at full speed without the use of millis().
unsigned long previousMillisUpdate;
const unsigned long intervalUpdate = 200;
void setup()
{
#ifndef __AVR_ATtiny85__
Serial.begin(9600);
Serial.println("7 Segment Backpack Test");
#endif
matrix.begin(0x70);
//Serial.begin( 9600);
// Serial.println( "Press the button");
pinMode( buttonPin, INPUT_PULLUP);
}
void loop()
{
unsigned long currentMillis = millis();
if( !counting)
{
// As soon as the button is pressed, the counter is
// made active and the value of millis() is remembered.
if( digitalRead( buttonPin) == LOW)
{
previousMillisCounter = currentMillis;
counting = true;
}
}
else
{
// To prevent a rollover problem, the time that has passed
// since the start is calculated with unsigned long.
// After that the down-counter value is calculated with long,
// because it might have passed the end time and became negative.
unsigned long countUpValue = currentMillis - previousMillisCounter;
long countDownValue = startCount - long( countUpValue);
if( countDownValue <= 0)
{
countDownValue = 0;
counting = false;
}
// Update the output.
// When the counting down has finished, the value
// of zero is also printed.
if( currentMillis - previousMillisUpdate >= intervalUpdate || countDownValue == 0)
{
previousMillisUpdate = currentMillis;
//Serial.println( countDownValue);
matrix.print(countDownValue);
matrix.writeDisplay();
if( countDownValue == 0)
{
Serial.println( "Press the button");
}
}
}
}
Misschien een gekke vraag, maar wat zegt het dan nu?
Re: Arduino expert gezocht
Dat zegt dat jij snel reageert en dat ik regelmatig wijzigingen aanbreng. Op dit forum kijk ik nog eens een keer naar het bericht dat ik schreef en wijzig het soms. Ook mijn Gist heb ik mooier gemaakt. Jij reageert zo snel, dat je soms met de eerste versie aan de slag gaat
De eerste versie werkte goed, maar het is nu nog net ietsje mooier: https://gist.github.com/Koepel/cae1f3d0f01e1b6285a4ac3c3548e2d2.
Probeer de "const unsigned long intervalUpdate = 200 ;" eens op 10 te zetten en kijk of het in de soep loopt. Een redelijke waarde voor de update van het display zou tussen de 20 ms en de 200 ms kunnen zitten.
Zie je die 5 seconden met "const long startCount = 5000 ;". Dat is een constant getal met het 'const' keyword. Dat 'const' kun je weghalen en proberen in te vullen met de potentiometer.
Daarna nog de arm en trigger.
Het is voor mij nog niet helemaal duidelijk hoeveel knoppen je hebt. Een knop om de waarde van de potentiometer vast te zetten, een arm en een trigger. Zijn dat drie knoppen ?
Over millis():
De functie millis() geeft een "unsigned long" terug met het aantal milliseconden. Na 50 dagen springt die waarde van 0xFFFFFFFF naar 0x00000000. Dat is de "rollover". Dat hoeft geen probleem te zijn met de volgende regels:
Doe wel: Als je iets wilt doen met millis(), onthoud dan de huidige waarde (bijvoorbeeld in "previousMillis"). Ik noem dat soms een "timestamp". Later kun je met "unsigned long" variabelen deze berekening doen: millis() - previousMillis.
Doe niet: Tel er nooit een getal bij op. Bereken nooit een waarde in de toekomst. Doe de berekening niet met "long".
Met millis() bereken je dus altijd hoeveel tijd er is verstreken sinds de "timestamp". Dat is voldoende om er van alles mee te doen.
De eerste versie werkte goed, maar het is nu nog net ietsje mooier: https://gist.github.com/Koepel/cae1f3d0f01e1b6285a4ac3c3548e2d2.
Probeer de "const unsigned long intervalUpdate = 200 ;" eens op 10 te zetten en kijk of het in de soep loopt. Een redelijke waarde voor de update van het display zou tussen de 20 ms en de 200 ms kunnen zitten.
Zie je die 5 seconden met "const long startCount = 5000 ;". Dat is een constant getal met het 'const' keyword. Dat 'const' kun je weghalen en proberen in te vullen met de potentiometer.
Daarna nog de arm en trigger.
Het is voor mij nog niet helemaal duidelijk hoeveel knoppen je hebt. Een knop om de waarde van de potentiometer vast te zetten, een arm en een trigger. Zijn dat drie knoppen ?
Over millis():
De functie millis() geeft een "unsigned long" terug met het aantal milliseconden. Na 50 dagen springt die waarde van 0xFFFFFFFF naar 0x00000000. Dat is de "rollover". Dat hoeft geen probleem te zijn met de volgende regels:
Doe wel: Als je iets wilt doen met millis(), onthoud dan de huidige waarde (bijvoorbeeld in "previousMillis"). Ik noem dat soms een "timestamp". Later kun je met "unsigned long" variabelen deze berekening doen: millis() - previousMillis.
Doe niet: Tel er nooit een getal bij op. Bereken nooit een waarde in de toekomst. Doe de berekening niet met "long".
Met millis() bereken je dus altijd hoeveel tijd er is verstreken sinds de "timestamp". Dat is voldoende om er van alles mee te doen.
- Sander8511
- Berichten: 18
- Geregistreerd: 02 Nov 2018, 23:05
Re: Arduino expert gezocht
Deze werkt ook, nadat ik de serial print even aanpas.
Als ik de
Ja inderdad; één knop om de timer vast te zetten. De safetyswitch om voeding op de launchknop te zetten en de launchknop zelf.
Kan je een knop gebruiken om een andere knop high of low te maken? Of is dat niet de beste manier voor de laatste 2 knoppen?
Hier ga ik even mee bezig:
Als ik de
aanpas naar 10 dan loopt hij in principe netjes terug. De 5000 zijn dan 5 seconden. De overige 3 digits zijn tienden, hondersten en duizendsten. Deze staan niet in volgorde. Hondersten staan op 2, duizendsten op 3 en tienden op 4. En in principe is voor mij alleen de tienden ook al voldoende.const unsigned long intervalUpdate = 200;"
Ja inderdad; één knop om de timer vast te zetten. De safetyswitch om voeding op de launchknop te zetten en de launchknop zelf.
Kan je een knop gebruiken om een andere knop high of low te maken? Of is dat niet de beste manier voor de laatste 2 knoppen?
Hier ga ik even mee bezig:
Zie je die 5 seconden met "const long startCount = 5000 ;". Dat is een constant getal met het 'const' keyword. Dat 'const' kun je weghalen en proberen in te vullen met de potentiometer.
Re: Arduino expert gezocht
Omdat millis() in milliseconden werkt, is het voor de sketch eenvoudiger om in milliseconden te rekenen.
Hoe de uitvoer er uit ziet, dat staat daar los van. Je wilt waarschijnlijk honderdsten van seconden laten zien. Daar zou je een functie voor kunnen maken. Als je milliseconden door 10 deelt, dan heb je honderdsten van seconden.
Ik probeer de safetyswitch en lauchknop naar Arduino om te zetten. Uiteindelijk is het je sketch die een relais om zet.
En dat wil je misschien ook nog af kunnen breken.
Schakelaars denderen, misschien is er ook nog een "debounce" nodig in de sketch.
Het volgende heb ik zomaar verzonnen, ik weet niet of het ergens op slaat.
Timer-vast-zet-knop: Dat kan een drukknop of schakelaar zijn verbonden met de digitale ingang. En bijvoorbeeld met een pullup weerstand van 4k7.
Safety-switch: Die zou de 5V alvast op een 5V relais kunnen zetten en ook naar een digitale pin. Het relais is niet aan, maar heeft dan alvast 5V.
Launch-knop: Dat lijkt me een drukknop die verbonden is met een digitale ingang. En ook weer met pullup weerstand.
De aansturing van het relais gebeurt dan vanuit de sketch, die het relais aanstuurt (dat alleen werkt als het relais ook 5V heeft).
Kun je daar voorbeelden van vinden ? Het is niet voor niets dat @nicoverduin het vaag vond en dat @shooter om een schema vroeg.
Hoe de uitvoer er uit ziet, dat staat daar los van. Je wilt waarschijnlijk honderdsten van seconden laten zien. Daar zou je een functie voor kunnen maken. Als je milliseconden door 10 deelt, dan heb je honderdsten van seconden.
Ik probeer de safetyswitch en lauchknop naar Arduino om te zetten. Uiteindelijk is het je sketch die een relais om zet.
En dat wil je misschien ook nog af kunnen breken.
Schakelaars denderen, misschien is er ook nog een "debounce" nodig in de sketch.
Het volgende heb ik zomaar verzonnen, ik weet niet of het ergens op slaat.
Timer-vast-zet-knop: Dat kan een drukknop of schakelaar zijn verbonden met de digitale ingang. En bijvoorbeeld met een pullup weerstand van 4k7.
Safety-switch: Die zou de 5V alvast op een 5V relais kunnen zetten en ook naar een digitale pin. Het relais is niet aan, maar heeft dan alvast 5V.
Launch-knop: Dat lijkt me een drukknop die verbonden is met een digitale ingang. En ook weer met pullup weerstand.
De aansturing van het relais gebeurt dan vanuit de sketch, die het relais aanstuurt (dat alleen werkt als het relais ook 5V heeft).
Kun je daar voorbeelden van vinden ? Het is niet voor niets dat @nicoverduin het vaag vond en dat @shooter om een schema vroeg.
- Sander8511
- Berichten: 18
- Geregistreerd: 02 Nov 2018, 23:05
Re: Arduino expert gezocht
Ok, ik ga even worstelen met dat millis en de combinatie van potentiometer en timer-vast-zet-knop. Dat is het lastigste gedeelte vind ik (of het is mijn ontwetendheid ).
De safetyswitch kan toch in een soort van serieschakeling staan met de launchknop? Zodra de safetyswitch on is, heeft de drukknop( Dat is zon grote arcadeknop die licht geeft in mijn geval ) voeding en hoeft dan alleen nog maar ingedrukt te worden om contact te maken om de timer te laten lopen. Of denk ik nu véél te simpel? Als de timer op "0" staat moet de relayPin HIGH worden.
Ja kan iemand mij dat uitleggen? Nico vond het wel vaag, maar hij legt me niet uit waarom? Ik begrijp het niet zo goed.
De safetyswitch kan toch in een soort van serieschakeling staan met de launchknop? Zodra de safetyswitch on is, heeft de drukknop( Dat is zon grote arcadeknop die licht geeft in mijn geval ) voeding en hoeft dan alleen nog maar ingedrukt te worden om contact te maken om de timer te laten lopen. Of denk ik nu véél te simpel? Als de timer op "0" staat moet de relayPin HIGH worden.
Het is niet voor niets dat @nicoverduin het vaag vond en dat @shooter om een schema vroeg.
Ja kan iemand mij dat uitleggen? Nico vond het wel vaag, maar hij legt me niet uit waarom? Ik begrijp het niet zo goed.
- nicoverduin
- Berichten: 5043
- Geregistreerd: 13 Mei 2013, 20:57
- Woonplaats: Heemskerk
Re: Arduino expert gezocht
Dat wil ik we uitleggen. Een paar jaar geleden werd ik benaderd via linked in waarin imand mij iets wilde laten bouwen wat een aantal io poorten kon omgooien vie bluetooth, wifo of andere op afstand bedienbare manieren. De foto was een willekeurige foto van het internet. Toen ik begon door te vragen werd het profiel verwijderd. Anders had ik de vraag doorgestuurd naar de politie.
Jij begon met “om een lamp of relais aan te schakelen” later een “lanceer installatie”. Dan gaan bij de alarmbellen rinkelen en haak ik af. Daar mag je uiteraard alles van vinden. Maar zo denk ik daarover.
Jij begon met “om een lamp of relais aan te schakelen” later een “lanceer installatie”. Dan gaan bij de alarmbellen rinkelen en haak ik af. Daar mag je uiteraard alles van vinden. Maar zo denk ik daarover.
35 berichten
• Pagina 3 van 4 • 1, 2, 3, 4
Wie is er online?
Gebruikers in dit forum: Geen geregistreerde gebruikers en 19 gasten