INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 1 Bewertungen - 1 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
HILFE! Servo über Mikrophon ansteuern
25.05.2014, 10:57
Beitrag #1
HILFE! Servo über Mikrophon ansteuern
Hallo,
ich brauche dringend Hilfe bei einem Arduino Leonardo Projekt.
Ich möchte das mein Servo sich bewegt (Drehung 180°) sobald ein Impuls übers Mikro eingegeben wird.
Damit ihr eine bessere Vorstellung von meinem Projekt habt:
ich möchte origami falten und mit fäden an den Servo so befestigen das durch die Servodrehung an den Fäden gezogen wird und sich das Origami dadurch verformt, idealerweise halt passend zur Musik bzw Herzschlaggeräuschen.

Den Code für den Mikrophon- Impuls habe ich schon wie folgt geschrieben (LED als vorläufiger Ersatz für den Servo, sprich LED leuchtet auf sobald meine Musik wiedergegeben wird).

Ich bin für jeden Tipp dankbar.


const int analogInPin = A0; //Mikrophon
const int ledPin = 13; // number of LED

//variables will change:

int sensorValue = 0;

void setup() {
//initialize teh LED pin as an output:
pinMode (ledPin, OUTPUT);
}
void loop(){

sensorValue = analogRead(analogInPin);

if (sensorValue >2) {
//turn LED on:
digitalWrite(ledPin, LOW);
delay(20);
}
else {
//turn LED off:
digitalWrite(ledPin,HIGH);
}
delay(2);
}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
27.05.2014, 12:38
Beitrag #2
RE: HILFE! Servo über Mikrophon ansteuern
Hallo,

das sollte kein Problem sein. Allerdings musst du da schon etwas mehr Struktur reinbringen. Einen Vorverstärker mit Spitzenwertgleichrichter hast du? Dann sollte die Verstärkung so skaliert werden, dass der Servo analog der Lautstärke ausschlägt. Richtig?

Gruß, Stefan . . . . . . //Wo mein Kölbchen dampft, da bin ich unverkrampft.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
27.05.2014, 16:09
Beitrag #3
RE: HILFE! Servo über Mikrophon ansteuern
Hi,
ich verstehe es so, dass Dein Beispiel mit der LED schon funktioniert. Dann packe doch einfach ein Servo.write() jeweils an die Stellen, an denen jetzt die LED geschaltet wird. (Siehe auch http://arduino.cc/de/Reference/Servo.)
Wahrscheinlich muss man dann die delays etwas anpassen bzw. da noch etwas Intelligenteres machen, aber es wäre mal ein Anfang.
...wenn das mal klappt, dann will ich ein Video davon sehen.
Gruß,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
01.06.2014, 13:35
Beitrag #4
RE: HILFE! Servo über Mikrophon ansteuern
hatte nochmal weitergetüfftelt und kam dann zu dieser Version:

#include <Servo.h>

Servo myservo; // create servo object to control a servo

int potpin = 0; // analog pin used to connect the potentiometer
int val; // variable to read the value from the analog pin
const int analogInPin = A0; //Mikrophon
const int ledPin = 13; // number of LED

int sensorValue = 0;

void setup()
{
pinMode (ledPin, OUTPUT);
myservo.attach(9); // attaches the servo on pin 9 to the servo object
}

void loop() {

sensorValue = analogRead(analogInPin);

if (sensorValue >2) {
// LED on:
digitalWrite(ledPin, LOW);
delay(20);

val = analogRead(potpin); // reads the value of the potentiometer (value between 0 and 1023)
val = map(val,0,500, 0, 179); // scale it to use it with the servo (value between 0 and 180)
myservo.write(val); // sets the servo position according to the scaled value
delay(15); // waits for the servo to get there
}


else {
// LED off:
digitalWrite(ledPin,HIGH);
}
delay(2);
val = analogRead(potpin); // reads the value of the potentiometer (value between 0 and 1023)
val = map(val,501,1023, 0, 179); // scale it to use it with the servo (value between 0 and 180)
myservo.write(val); // sets the servo position according to the scaled value
delay(15); // waits for the servo to get there
}


Beim ersten Versuchen hat es noch super funktioniert,und jetzt reagiert der Servo leider nur noch mit leisem permanenten schnurren aber der Servo dreht nicht mehr... ich versteh es nicht.

Auch das Beispiel Knob aus dem Menü reagiert nicht mehr. Ist der Servo kaputt oder an welchen Einstellungen muss ich spielen damit das wieder funktioniert?

Lieben Dank
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
01.06.2014, 19:43
Beitrag #5
RE: HILFE! Servo über Mikrophon ansteuern
Hallo,

also ehrlich gesagt, bei diesem Programm würde ich nichts anderes erwarten, als nervöses Gezappel. Als Erstes solltest du das Eingangssignal sinnvoll normieren und zwar so, dass Geräusche von der entsprechenden Variable als stabiles Lautstärkeabbild dargestellt werden (monitoren!). Dann würde ich in einem festen Takt den aktuellen Wert an das Servo übergeben. Die notwendigen Elemente sind bereits da, sie müssen nur noch sinnvoll strukturiert werden. Und ich würde je Schleifendurchlauf nur ein Delay einbauen. Das schaffst du!

Gruß, Stefan . . . . . . //Wo mein Kölbchen dampft, da bin ich unverkrampft.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
02.06.2014, 09:17 (Dieser Beitrag wurde zuletzt bearbeitet: 02.06.2014 09:23 von Thorsten Pferdekämper.)
Beitrag #6
RE: HILFE! Servo über Mikrophon ansteuern
Hi,
kannst Du mal ganz genau beschreiben, was Du vorhast? Das wird aus dem Coding naemlich nicht wirklich klar.
Vielleicht versuchst Du es mal so:
Code:
float smoothedVal = 0;
float alpha = 0.01;  // damit muss man ein bisschen experimentieren

void loop() {
val = analogRead(potpin);
// Wert glaetten
smoothedVal += alpha * val;
int servoVal = map((int)smoothedVal,0,1023, 0, 179);
myservo.write(servoVal);
delay(15);  
}

Das ganze ist aus dem Kopf und nicht ausprobiert. ...aber ich denke, die Idee wird klar.

Gruss,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  RGB Animation über Serial Steuern Medolino 5 63 20.02.2017 16:14
Letzter Beitrag: Medolino
  Arduino-UNO LED über Taster digital zum leuchten zu bringen IvKriz 9 212 18.02.2017 08:33
Letzter Beitrag: renid55
  Servo-Ansteuerung über einen Push-Button Aubergine83 1 91 16.02.2017 19:49
Letzter Beitrag: georg01
  Hilfe bei Taster huber5093 11 148 14.02.2017 19:26
Letzter Beitrag: Tommy56
  LED langsam über 15 Minuten dimmen Kriskind 14 435 09.02.2017 13:26
Letzter Beitrag: Kriskind
  Display über I2-Bus betreiben mfri 22 569 23.01.2017 11:06
Letzter Beitrag: renid55
  Messdatenausgabe auf Webserver über NanoESP RivaDynamite 10 520 10.01.2017 15:49
Letzter Beitrag: renid55
  Über drei Taster zwei externe Timer steuern Sidamo 23 506 09.01.2017 20:12
Letzter Beitrag: Tommy56
  LED Dimmen über Bewegungsmelder Jens040774 8 244 05.01.2017 19:07
Letzter Beitrag: renid55
  Arduino 2 schrittmotoren ansteuern super47 10 633 04.01.2017 01:35
Letzter Beitrag: renid55

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste