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);
}