Bitte um Hilfe bei Servo und ultrasonic


hallo zusammen,
ich benötige eure hilfe das coden für ein kleines projekt angeht.

folgender aufbau:
ich habe ein arduino uno board, einen servo und ein ultrasonic und ein piezo.
ich möchte den ultrasonic auf dem servo anbringen und folgendes programmieren.
der servo soll bei z.b. 0grad - 20grad - 40grad, 60grad, 80grad, 100grad, 120grad und 140grad stehenbleiben.

genau diesen werten soll der ultrasonic seine messung erst anfangen.
außerdem ich dem system sagen können dass es werte von der tastatur einlesen kann. z.b. a=0grad und b=20grad, c=40grad.........

und das resultat soll soll folgendermaßen aussehen. ich gebe im serial motor ein: b c und dann wieder a. der servo bewegt sich.
ultrasonic misst diesen werten und gibt einen ton raus.
aber.........wenn er von nach b geht soll er in den gradwerten 2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19 eben nichts messen und
keinen ton rausgeben.

ich habe ein arduino audio code beispiel bei dem er entsprechend der entfernungsmessung vom ultrasonic einen ton rausgibt.
z.b. 0grad -  ein holzbalken in 10 cm entferung und er gibt einen c ton raus.......
    10 grad - ................................................d ton raus....

die töne habe ich vorher deklariert.....also:

#define not_c 262
#define nited 294

...ich habe auch ein code beispiel im internet gefunden aber nun muss nur noch der servo und meine wünsche von oben mitreingnommen werden.

code: [select]
#define nota_do  262
#define nota_re  294
#define nota_mi  330
#define nota_fa  349
#define nota_sol 392
#define nota_la  440
#define nota_si  494

int pinogatilho = 2;
int pinoeco = 3;
int pinobuzzer = 9;
int valor = 0;
int nota = 0;
int intervalo_distancia = 7;

void setup() {
 pinmode(pinogatilho, output);
 pinmode(pinoeco, input);
 pinmode(pinobuzzer, output);
}

void loop() {
 long duration, inches, cm;
 digitalwrite(pinogatilho, low);
 delaymicroseconds(2);
 digitalwrite(pinogatilho, high);
 delaymicroseconds(5);
 digitalwrite(pinogatilho, low);
 duration = pulsein(pinoeco, high);
 cm = microsecondstocentimeters(duration);
 if (cm > (intervalo_distancia * 0) && cm < (intervalo_distancia * 1)) {
   nota = nota_do;
 } else if (cm >= (intervalo_distancia * 1) && cm < (intervalo_distancia * 2)) {
   nota = nota_re;
 } else if (cm >= (intervalo_distancia * 2) && cm < (intervalo_distancia * 3)) {
   nota = nota_mi;
 } else if (cm >= (intervalo_distancia * 3) && cm < (intervalo_distancia * 4)) {
   nota = nota_fa;
 } else if (cm >= (intervalo_distancia * 4) && cm < (intervalo_distancia * 5)) {
   nota = nota_sol;
 } else if (cm >= (intervalo_distancia * 5) && cm < (intervalo_distancia * 6)) {
   nota = nota_la;
 } else if (cm >= (intervalo_distancia * 6) && cm < (intervalo_distancia * 7)) {
   nota = nota_si;
 } else {
   nota = 0;
 }

 if (nota) {
   tone(pinobuzzer, nota);
 } else {
   notone(pinobuzzer);
 }
 delay(100);
}

long microsecondstocentimeters(long microseconds)
{
 // speed of sound 340 m/s or 29 microseconds per centimeter.
 // ping travels out , back, find distance of the
 // object take half of distance travelled.
 return microseconds / 29 / 2;
}



ist jemand bereit dazu mir zu helfen?
viele dank im voraus
al


ist jemand bereit dazu mir zu helfen?
viele dank im voraus

dafür sind wir ja hier angemeldet, um hilfe zu geben und hilfe zu bekommen. ;)
erst einmal solltest du strukturiert die ganze sache herangehen - selbst dein niedergeschriebenes posting sieht noch mächtig chaotisch aus. das solltest du hinsichtlich der lesbarkeit noch ändern, überflüssige leerzeilen rausnehmen, codebeispiele in entsprechende tags setzen usw..

wenn du einem "ultrasonic" schreibst, meinst du sicher einen ultraschall-entfernungsmesser. dazu bräuchte man zumindest die konkrete produktbezeichnung, weil man dir sonst hinsichtlich der ansteuerung und auswertung keine hilfe leisten kann.
grundsätzlich würde ich das ganze in einzelne funktionen gliedern, die dann in der loop() aufgerufen werden. diese funktionen wären dann zum stellen des servos, zum messen der distanz und dann in abhängigkeit von der distanz das abspielen des tones. die herangehensweise ist unkritisch, ob du nun zuerst das abspielen programmierst oder die auswertung der eingaben über die serielle schnittstelle. aber immer schritt für schritt weiterarbeiten, nicht alles zeitgleich übers knie brechen. das führt üblicherweise (zumindest bei anfängern) nicht zum erfolg.

ich würde damit beginnen, die eingaberoutine zu entwerfen, dazu findet man in den mitgelieferten beispielen schon gute anhaltspunkte.


Arduino Forum > International > Deutsch (Moderator: uwefed) > Bitte um Hilfe bei Servo und ultrasonic


arduino

Comments

Popular posts from this blog

Thread: PKI Client 5.00 install (for eToken Pro)

ATmega2560-Arduino Pin Mapping

Crossfader Arduino Tutorial