Arduino programerings hjälp

C, C++, Pascal, Assembly, Raspberry, Java, Matlab, Python, BASIC, SQL, PHP, etc.
ekenlund
Inlägg: 1
Blev medlem: 20 juni 2016, 17:44:03
Ort: Åkersberga
Kontakt:

Arduino programerings hjälp

Inlägg 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.
Användarvisningsbild
Icecap
Inlägg: 26139
Blev medlem: 10 januari 2005, 14:52:15
Ort: Aabenraa, Danmark

Re: Arduino programerings hjälp

Inlägg av Icecap »

Vilken del behöver du hjälp med?
Miramithe
Inlägg: 1423
Blev medlem: 21 januari 2013, 17:45:10
Ort: Borlänge

Re: Arduino programerings hjälp

Inlägg av Miramithe »

Hur har du tänkt att börja? Gjort något eget försök än?
Användarvisningsbild
Icecap
Inlägg: 26139
Blev medlem: 10 januari 2005, 14:52:15
Ort: Aabenraa, Danmark

Re: Arduino programerings hjälp

Inlägg 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.
ClasseMan79
Inlägg: 7
Blev medlem: 8 maj 2015, 14:36:59

Re: Arduino programerings hjälp

Inlägg 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);
}
Skriv svar