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
  Arduino 2 schrittmotoren ansteuern super47 3 104 Gestern 14:31
Letzter Beitrag: Franz54
  Kommunikation über das WiFi-Shield Flap 3 230 07.11.2016 20:20
Letzter Beitrag: hotsystems
  Menü über Bluetooth Eingabe abwarten anwo 4 502 18.10.2016 08:59
Letzter Beitrag: Lolliball
  ATtiny und Servo Bibliothek malsehen 9 302 15.10.2016 18:09
Letzter Beitrag: malsehen
  Hilfe: IR Remote Steuerung, MSGEQ7 + RGB-LED Streifen dastob 1 118 14.10.2016 21:40
Letzter Beitrag: hotsystems
  Daten über USB verarbeiten Felix91 10 319 12.10.2016 13:00
Letzter Beitrag: Tommy56
  Code mit Verifikation über Keypad & LCD machnetz 5 215 10.10.2016 15:01
Letzter Beitrag: torsten_156
Sad Ich brauche Hilfe Prosac 4 232 09.10.2016 18:39
Letzter Beitrag: Prosac
  Ansteuern eines Schrittmotors Uwe1475 28 1.010 03.09.2016 21:03
Letzter Beitrag: Uwe1475
  at24c256 Hilfe Gandalf 6 247 29.08.2016 18:59
Letzter Beitrag: MKc

Gehe zu:


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