Wie kann man bei einem arduino zwei gleichfrequente töne direkt hintereinander abspielen?

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

 

Hallo Satchy

Ich würde das so machen:

 

      tone(speaker, 440); //aktiviert den Lautsprecher

      delay(500); //Warten...

      noTone (speaker); //deaktiviert den Lautsprecher

 

Gruss Steglo2

 

 

Sorry, hab' noch was vergessen, nach noTone kommt natürlich noch eine kleine Pause von etwa 20 (delay (20);), dann einfach wiederholen.

Gruss und viel Erfolg Steglo2

0

Müsste so eigentlich mit Pause sein, ist aber eine sehr umständliche Methode. Schau Dir mal die Beispiele an.

Wieso funktioniert dieser zufallsgenerator bei Arduino nicht?

Hallo zusammen!

Ich möchte bei einer Rennautobahn eine Ampel bauen. Um es spannender zu gestalten möchte ich, das die letzte LED nach einer zufällig gewählten Zeit (zwischen 1 und 4 sekunden) . Zum steuern verwende ich einen Arduino Mega und zum programmieren das Arduino Programm. das nachfolgende Programm haben ich schon in C# getestet und dort funktioniert es, nur leider nicht im Arduino Programm.

const int intRot13 = 1;
const int intRot12 = 2;
const int intRot11 = 3;
const int intRot10 = 4;
const int intRot9 = 5;

void setup()
{
  pinMode(intRot13, OUTPUT);
  pinMode(intRot12, OUTPUT);
  pinMode(intRot11, OUTPUT);
  pinMode(intRot10, OUTPUT);
  pinMode(intRot9, OUTPUT);
}

void Zufall(byte bytAmpel)
{
 int Zahl1 = 0;
 random Rnd = new random();
 Zahl1 = Rnd.Next(1000, 4000)
}

void loop()
{
  digitalWrite(1, HIGH);
  delay(1500);
  digitalWrite(2, HIGH);
  delay(1500);
  digitalWrite(3, HIGH);
  delay(1500);
  digitalWrite(4, HIGH);
  delay(1500);
  digitalWrite(5, HIGH);
  delay(Zufall());
  delay (3000);
  digitalWrite(1, LOW);
  digitalWrite(2, LOW);
  digitalWrite(3, LOW);
  digitalWrite(4, LOW);
  digitalWrite(5, LOW);
}

Wäre für jede Hilfe dankbar!

...zur Frage

Was ist falsch an meinem Arduino Programm?

Meine Arduino Rolladensteuerung soll bei einmaligem klicken auf den taster den rolladen ganz herunter fahren danach kann man ihn über den gleichen Taster wieder hochfahren. Nun das meiner Meinung nach komplizierte: Während der Rolladen auf dem weg nach oben oder unten ist soll er stehen bleiben und bei weiterem klicken wieder weiterfahren allerdings in die entgegengesetzte Richtung. Wie würdet ihr das Programmieren bzw was ist an meinem Programm (siehe unten) Falsch? Ich weis was mit den millis() nicht stimmt aber wie könnte man das lösen? bitte um schnelle Antwort :)

Hier das Programm :

int Taster = 0;

int R1 = 1;

int R2 = 2;

int Status = 0;

int Unterwegs = 0;

int gestoppt = 0;

int R1_gestoppt = 0;

int R2_gestoppt = 1;

 int T1 = 0;

 int T2 = 0;

 int T3 = 0;

 int T4 = 0;

void setup() {

 pinMode(Taster, INPUT);

 pinMode(R1, OUTPUT);

 pinMode(R2, OUTPUT);

 digitalWrite(R1, HIGH);

 Unterwegs = 1;

 delay(3000);

 Unterwegs = 0;

 digitalWrite(R1, LOW);

 Status = 1;

 Serial.begin(9600);

}

void loop() {

Serial.print("Taster:"); Serial.println(digitalRead(Taster));

Serial.print("Status:"); Serial.println(Status);

Serial.print("Unterwegs:"); Serial.println(Unterwegs);

Serial.print("Gestoppt:"); Serial.println(gestoppt);

Serial.print("R1 gestoppt:"); Serial.println(R1_gestoppt);

Serial.print("R2 gestoppt:"); Serial.println(R2_gestoppt);

   if (digitalRead(R1) == HIGH) {

 digitalWrite(R2, LOW);} else {

 if (digitalRead(R2) == HIGH){

 digitalWrite(R1, LOW);}}

if (digitalRead(Taster) == HIGH) {

  if (Status == 1) {

  digitalWrite(R2, HIGH);

  R1_gestoppt = 0;

  R2_gestoppt = 0;

  Unterwegs = 1;

  T1 = millis();

  if (digitalRead(R2) == HIGH && (millis()-T1) >=3000) {

   Unterwegs = 0;

   digitalWrite(R2, LOW);

   Status++;}} else {

     if (Status == 2) {

   digitalWrite(R1, HIGH);

   R1_gestoppt = 0;

   R2_gestoppt = 0;

   Unterwegs = 1;

   T2 = millis();

   if (digitalRead(R1) == HIGH && (millis()-T2) >=3000) {

   Unterwegs = 0;

   digitalWrite(R1, LOW);

   Status = 1;}}}}

   

   if (Unterwegs == 1) {

   if (digitalRead(Taster) == HIGH) {

   if (digitalRead(R1) == HIGH) {

       digitalWrite(R1 ,LOW);

       R1_gestoppt = 1;

       R2_gestoppt = 0;

       gestoppt = 1;} else {

   if(digitalRead(R2) == HIGH) {

       digitalWrite(R2, LOW);

       R1_gestoppt = 0;

       R2_gestoppt = 1;

       gestoppt = 1;}}

  if (gestoppt == 1) {

  if (digitalRead(Taster) == HIGH) {

  if (R1_gestoppt == 1) {

      digitalWrite(R1, LOW);

      digitalWrite(R2, HIGH);

      R1_gestoppt = 0;

      R2_gestoppt = 0;

      T3 = millis();

      if (digitalRead(R2) == HIGH && (millis()-T3) >=3000) {

      digitalWrite(R2, LOW);

  }} else {

  if (R2_gestoppt == 1) {

      digitalWrite(R2, LOW);

      digitalWrite(R1, HIGH);

      R2_gestoppt = 0;

      R1_gestoppt = 0;

      T4 = millis();

      if (digitalRead(R1) == HIGH && (millis()-T4) >=3000) {

      digitalWrite(R1, LOW);}}}}}}}}

                     

                     

    

...zur Frage

arduino tv libary stürtzt ab?

ich bekomme bei der arduino TV out libary immer einen error auch wenn alles richtig ist hat vielleicht wer ne Lösung

Arduino: 1.8.3 Hourly Build 2017/05/31 06:33 (Windows 10), Board: "Arduino/Genuino Uno"

C:\Users**\AppData\Local\Temp\ccIdAHwk.s: Assembler messages:

C:\Users**\AppData\Local\Temp\ccIdAHwk.s:739: Error: unknown opcode `delay2'

C:\Users**\AppData\Local\Temp\ccIdAHwk.s:794: Error: unknown opcode `delay1'

C:\Users**\AppData\Local\Temp\ccIdAHwk.s:796: Error: unknown opcode `delay2'

C:\Users**\AppData\Local\Temp\ccIdAHwk.s:799: Error: unknown opcode `delay2'

C:\Users**\AppData\Local\Temp\ccIdAHwk.s:802: Error: unknown opcode `delay2'

C:\Users\NILSNO~1\AppData\Local\Temp\ccIdAHwk.s:805: Error: unknown opcode `delay2'

C:\Users\NILSNO~1\AppData\Local\Temp\ccIdAHwk.s:808: Error: unknown opcode `delay2'

C:\Users\NILSNO~1\AppData\Local\Temp\ccIdAHwk.s:811: Error: unknown opcode `delay1'

C:\Users\NILSNO~1\AppData\Local\Temp\ccIdAHwk.s:816: Error: unknown opcode `delay1'

C:\Users\NILSNO~1\AppData\Local\Temp\ccIdAHwk.s:819: Error: unknown opcode `delay3'

C:\Users\NILSNO~1\AppData\Local\Temp\ccIdAHwk.s:868: Error: unknown opcode `svprt'

C:\Users\NILSNO~1\AppData\Local\Temp\ccIdAHwk.s:872: Error: unknown opcode `o1bs'

C:\Users\NILSNO~1\AppData\Local\Temp\ccIdAHwk.s:876: Error: unknown opcode `o1bs'

C:\Users\NILSNO~1\AppData\Local\Temp\ccIdAHwk.s:877: Error: unknown opcode `delay2'

C:\Users\NILSNO~1\AppData\Local\Temp\ccIdAHwk.s:879: Error: unknown opcode `o1bs'

C:\Users\NILSNO~1\AppData\Local\Temp\ccIdAHwk.s:880: Error: unknown opcode `delay2'

C:\Users\NILSNO~1\AppData\Local\Temp\ccIdAHwk.s:882: Error: unknown opcode `o1bs'

C:\Users\NILSNO~1\AppData\Local\Temp\ccIdAHwk.s:883: Error: unknown opcode `delay2'

C:\Users\NILSNO~1\AppData\Local\Temp\ccIdAHwk.s:885: Error: unknown opcode `o1bs'

C:\Users\NILSNO~1\AppData\Local\Temp\ccIdAHwk.s:886: Error: unknown opcode `delay2'

C:\Users\NILSNO~1\AppData\Local\Temp\ccIdAHwk.s:888: Error: unknown opcode `o1bs'

C:\Users\NILSNO~1\AppData\Local\Temp\ccIdAHwk.s:889: Error: unknown opcode `delay2'

C:\Users\NILSNO~1\AppData\Local\Temp\ccIdAHwk.s:891: Error: unknown opcode `o1bs'

C:\Users\NILSNO~1\AppData\Local\Temp\ccIdAHwk.s:892: Error: unknown opcode `delay1'

C:\Users\NILSNO~1\AppData\Local\Temp\ccIdAHwk.s:895: Error: unknown opcode `o1bs'

C:\Users\NILSNO~1\AppData\Local\Temp\ccIdAHwk.s:897: Error: unknown opcode `delay1'

C:\Users\NILSNO~1\AppData\Local\Temp\ccIdAHwk.s:899: Error: unknown opcode `o1bs'

C:\Users\NILSNO~1\AppData\Local\Temp\ccIdAHwk.s:900: Error: unknown opcode `svprt'

C:\Users\NILSNO~1\AppData\Local\Temp\ccIdAHwk.s:902: Error: unknown opcode `o1bs'

C:\Users\NILSNO~1\AppData\Local\Temp\ccIdAHwk.s:950: Error: unknown opcode `svprt'

C:\Users\NILSNO~1\AppData\Local\Temp\ccIdAHwk.s:954: Error: unknown opcode `o1bs'

C:\Users\NILSNO~1\AppData\Local\Temp\ccIdAHwk.s:957: Error: unknown opcode `delay1'

C:\Users\NILSNO~1\AppData\L

...zur Frage

Arduino stürtzt bei folgenden sketch ab (unten). Wo liegt der Fehler? (Edit: es stürtzt nach der bewegung des schrittmotors ab)?

Hier der sketch

int ustrig=2;

int usecho=7;

long dauer=0;

long entfernung=0;

#include <Stepper.h> 

int SPU = 2048; 

Stepper Motor(SPU, 3,5,4,6); 

#include <Servo.h>

Servo servoBlau;

Servo servoGros;

void setup() {

Motor.setSpeed(5); 

Serial.begin (9600); 

pinMode(ustrig, OUTPUT); 

pinMode(usecho, INPUT);

servoBlau.attach(8);

servoGros.attach(9);

}

void loop() {

 Motor.step(512); //1/4

delay(2000);

digitalWrite(ustrig, LOW); 

digitalWrite(ustrig, HIGH);

digitalWrite(ustrig, LOW);

dauer = pulseIn(usecho, HIGH); 

entfernung = (dauer/2) * 0.03432; 

if (entfernung >= 500 || entfernung <= 0) 

{

Serial.println("Kein Messwert"); 

}

else 

{

Serial.print(entfernung); 

Serial.println(" cm"); 

delay(1000);

 servoGros.write(180);

delay(3000);

servoBlau.write(135);

delay(3000);

servoGros.write(90);

delay(3000);

servoBlau.write(45);

delay(3000);

servoGros.write(180);

}

Motor.step(-512); //1/4

delay(2000);

digitalWrite(ustrig, LOW); 

digitalWrite(ustrig, HIGH);

digitalWrite(ustrig, LOW);

dauer = pulseIn(usecho, HIGH); 

entfernung = (dauer/2) * 0.03432; 

if (entfernung >= 500 || entfernung <= 0) 

{

Serial.println("Kein Messwert"); 

}

else 

{

Serial.print(entfernung); 

Serial.println(" cm"); 

delay(1000);

 servoGros.write(180);

delay(3000);

servoBlau.write(135);

delay(3000);

servoGros.write(90);

delay(3000);

servoBlau.write(45);

delay(3000);

servoGros.write(180);

}

}

...zur Frage

Wo ist der Fehler??In diesem Programm?Arduino!?

#include <SPI.h>

#include <MFRC522.h>

#include <Stepper.h>

int SPU = 2048

 

#define SS_PIN 10 // RFID-RC522 SDA

#define RST_PIN 9 // RFID-RC522 RST

#define buzzerPin = 7; // digital Pin - Buzzer

Stepper Motor(SPU, 3,5,4,6);

MFRC522 mfrc522(SS_PIN, RST_PIN);

 

// Hier die UUID fuer erlaubte Karten eingeben und in "erlaubteKartenCount" 

// Anzahl der Eintraege angeben

long erlaubteKarten[] = { 1011520, 2492530, 171762080 };

byte erlaubteKartenCount = 3; 

 

 

 

 

void setup() {

 Serial.begin(9600);

 SPI.begin();

 mfrc522.PCD_Init();

 

 pinMode(buzzerPin, OUTPUT);

 Motor.setSpeed(5);

 

}

 

 

 

void loop() {

 if ( ! mfrc522.PICC_IsNewCardPresent()) {

  return;

 }

 

 if ( ! mfrc522.PICC_ReadCardSerial()) {

  return;

 }

 

 long code=0;

  

 for (byte i = 0; i < mfrc522.uid.size; i++) {

  code=((code+mfrc522.uid.uidByte[i])10);

 }

 

 Serial.print(F("Erkannte Kartennummer:"));

 Serial.print(code);

 

 if(PruefeKartenberechtigung(code) == true) {

  Serial.println(F(" [BERECHTIGT]"));

  KarteErkanntSound();

    

  Motor.step(2048);

  delay(1000)

  Motor.step(-2048);

  delay(1000)

 } else {

  Serial.println(F(" [NICHT BERECHTIGT]"));

  UnbekannteKarteSound();

 }

 delay(2000);

}

 

 

 

boolean PruefeKartenberechtigung(long KartenUUID) {

 boolean erlaubt = false;

  

 for(int i=0; i < erlaubteKartenCount; i++) {

  if(erlaubteKarten[i] == KartenUUID) {

   erlaubt = true;

  }

 }

 return erlaubt;

}

 

 

 

void UnbekannteKarteSound(void) {

 for (byte i=0; i<3; i++) {

  tone(buzzerPin, 500, 150);

  delay(200);

 }

}

 

 

 

void KarteErkanntSound(void) {

 tone(buzzerPin, 1000, 150);

 delay(200);

 tone(buzzerPin, 1500, 150);

 delay(200);

}

versuche ein Stepmotor zu betreiben aber dieser Fehler taucht

die ganze zeit auf :

exit status 1

expected ',' or ';' before 'long'

PS Danke :D







...zur Frage

Arduino und Visual Basic?

Hi,

ich habe folgendes Problem: Also, ich habe es geschafft mit VB, daten an meinen Arduino zu senden und der Arduino dann auf die Daten reagiert und Befehle ausführt. Ich sage einfach in VB Serialport1.write("A") und dann einfach im Arduino if(Serial.read() == 'A') {Irgend ein Befehl}

Das klappt auch Super!

Nur jetzt weiß ich nicht wie das anders herum gehen soll.

Ich habe es probiert indem ich dem Arduino sage: Serial.println("A"); Und in VB: if(Serialport1.readLine = "A") then

msgbox("Hallo")

end if

Doch dann hängt sich mein Programm auf.

Weiß wer von euch wie das gehen könnte?

Danke im Voraus!

...zur Frage

Was möchtest Du wissen?