Sida 1 av 1
Arduino programerings hjälp
Postat: 6 juli 2016, 17:51:44
av ekenlund
Behöver lite hjälp med min programering till arduino,
Jag vill att en knapp ska få en summer att pipa kort tre gånger i rad med 1sec mellanrum sedan starta en slump på 1-5 sec och sedan ska summer pipa en lång signal. sedan ska allt nollställas och samma sak hända nästa gång man trycker på knappen.
Re: Arduino programerings hjälp
Postat: 6 juli 2016, 19:54:56
av Icecap
Vilken del behöver du hjälp med?
Re: Arduino programerings hjälp
Postat: 6 juli 2016, 20:19:02
av Miramithe
Hur har du tänkt att börja? Gjort något eget försök än?
Re: Arduino programerings hjälp
Postat: 6 juli 2016, 20:58:10
av Icecap
ekenlund: Mitt sätt att lösa det på:
* Skapa en Timer-interrupt på kanske 100Hz. Den styr så buzzern via lite variabler.
* Skapa en "slumpgenerator" vid att för varje nytt slumptal multiplicera variabeln med ett primtal och sedan addera ett annat primtal. Man maskar sedan ut de antal bitar man behöver.
* Resten av det hela är en fråga om att läsa knappen och starta en sekvens.
Re: Arduino programerings hjälp
Postat: 7 juli 2016, 11:18:19
av ClasseMan79
I Arduino libbarna finns både funktionen delay() och random() färdiga att användas.
Detta borde väl funka men jag har inte testat:
Kod: Markera allt
const int BUTTON_PIN = 2; // the number of the pushbutton pin
const int SUMMER_PIN = 9; // the number of the Summer pin
void setup() {
// initialize the summer pin as an output:
pinMode(SUMMER_PIN, OUTPUT);
// initialize the pushbutton pin as an input:
pinMode(BUTTON_PIN, INPUT);
randomSeed(analogRead(A0));
}
void loop() {
if (digitalRead(BUTTON_PIN) == HIGH) {
startSeq();
}
}
void startSeq(){
for(int i = 0; i < 3; i++){
//playSound
analogWrite(SUMMER_PIN, 20);
delay(50);
//stopSound
analogWrite(SUMMER_PIN, 0);
delay(950);
}
delay(1000 + random(0,4000));
//playSound
analogWrite(SUMMER_PIN, 20);
delay(2000);
//stop sound
analogWrite(SUMMER_PIN, 0);
}