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
  Servo mit einem Taster und 433mhz steuern Thor Wallhall 63 2.263 29.07.2017 11:02
Letzter Beitrag: Thor Wallhall
  Kommunikation über das WiFi-Shield Flap 6 849 25.07.2017 14:14
Letzter Beitrag: Tommy56
  LEDs ansteuern ohne Delay mir MIDI abfrage OnkelPelle 11 651 20.07.2017 22:35
Letzter Beitrag: hotsystems
  Arduino I2C Servo MarcelTitan 8 588 14.07.2017 10:09
Letzter Beitrag: Tommy56
  Ublox Neo 6M und Nextion ! Bitte um Hilfe. b3ta 19 799 13.07.2017 14:52
Letzter Beitrag: Tommy56
  Anfänger sucht erfahrene Hilfe Customizer 21 1.158 11.07.2017 21:37
Letzter Beitrag: Customizer
  I2C rgb LCD ansteuern Sixtus80 18 777 03.07.2017 21:50
Letzter Beitrag: hotsystems
  WS2801 Strip LED einzeln ansteuern michanto 9 4.595 02.07.2017 21:39
Letzter Beitrag: hotsystems
  Bitte um Hilfe Arduino Nano-MAX7219-PIR_Sensor Opa_Klaus 35 1.497 20.05.2017 21:11
Letzter Beitrag: Opa_Klaus
  Brauche Hilfe für meine Abfüllanlage/ millis() Slash96 8 559 10.05.2017 21:04
Letzter Beitrag: MicroBahner

Gehe zu:


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