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
  Prüfung eines Drucksensors mit Hilfe des Arduino r4c3 7 179 Heute 19:04
Letzter Beitrag: Binary1
  Servo Ansteuerung SOFTHARD 23 779 17.10.2017 10:56
Letzter Beitrag: SOFTHARD
  3 Stück LED 8x8 Matrix via Array ansteuern Bino87 9 375 09.10.2017 19:00
Letzter Beitrag: Tommy56
  Adafruit NeoMatrix 8x8 - Einzelne Pixel ansteuern scritch 5 183 05.10.2017 16:02
Letzter Beitrag: Tommy56
  Richtungsblinker und Warnblinker über jeweils einen Schalter Crazydiver 25 897 04.10.2017 12:47
Letzter Beitrag: hotsystems
Photo Hilfe bei meinem Arduino Projekt Niklas 10 375 23.09.2017 21:05
Letzter Beitrag: Niklas
  Kommunikation über das WiFi-Shield Flap 13 1.419 12.09.2017 22:12
Letzter Beitrag: Flap
  Servo mit einem Taster und 433mhz steuern Thor Wallhall 63 2.882 29.07.2017 11:02
Letzter Beitrag: Thor Wallhall
  LEDs ansteuern ohne Delay mir MIDI abfrage OnkelPelle 11 876 20.07.2017 22:35
Letzter Beitrag: hotsystems
  Arduino I2C Servo MarcelTitan 8 815 14.07.2017 10:09
Letzter Beitrag: Tommy56

Gehe zu:


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