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.
Arduino programerings hjälp
Re: Arduino programerings hjälp
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.
* 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.
-
- Inlägg: 7
- Blev medlem: 8 maj 2015, 14:36:59
Re: Arduino programerings hjälp
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:
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);
}