Pages: [1]   Go Down
Author Topic: Tone() Variablen Deklaration und abgreifung von Distanz Daten frage !!  (Read 463 times)
0 Members and 1 Guest are viewing this topic.
AllemaniA
Offline Offline
Newbie
*
Karma: 0
Posts: 32
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hi

hab nen Problem hab den parallax ping und den Standard code und möchte jetzt den Distanz Daten ein audi ton zuweisen

Code:
const int pingPin = 7;
int speaker = 3;
int distance = duration /29/2;

void setup() {
  // initialize serial communication:
  Serial.begin(9600);
}

void loop()
{
  // establish variables for duration of the ping,
  // and the distance result in inches and centimeters:
  long duration, cm;

  // The PING))) is triggered by a HIGH pulse of 2 or more microseconds.
  // Give a short LOW pulse beforehand to ensure a clean HIGH pulse:
  pinMode(pingPin, OUTPUT);
  pinMode(speaker, OUTPUT);
  digitalWrite(pingPin, LOW);
  delayMicroseconds(2);
  digitalWrite(pingPin, HIGH);
  delayMicroseconds(5);
  digitalWrite(pingPin, LOW);

  // The same pin is used to read the signal from the PING))): a HIGH
  // pulse whose duration is the time (in microseconds) from the sending
  // of the ping to the reception of its echo off of an object.
  pinMode(pingPin, INPUT);
  duration = pulseIn(pingPin, HIGH);

  // convert the time into a distance
  microsecondsToCentimeters(duration);
 
 
  Serial.print(cm);
  Serial.print("cm");
  Serial.println();
 
  delay(100);
}



 long microsecondsToCentimeters (long microseconds)
{
  // The speed of sound is 340 m/s or 29 microseconds per centimeter.
  // The ping travels out and back, so to find the distance of the
  // object we take half of the distance travelled.
  return microseconds / 29 / 2;
  }
 
 // Umwandlung der Ton Information in Töne
distanceToAudiosignales;
{
  if ((distance <= 50) && ( distance >= 35));
  tone(3, 50,1000);
  delay (1000);
  if ((distance <= 34) && ( distance >= 20));
  tone(3,40,500);
  delay(1000);
  if ((distance <= 19) && ( distance >= 10));
  tone(3,35,420);
  delay(300);
  if ((distance <=9) && ( distance >= 5));
  tone(3,30,300);
  delay (100);
  }/code]



so wie deklariert man nun die Distanz wenn diese erst in der loop ermittelt wird ? wie kann ich die variable mit dem Distanz wert dann in der if schleife wieder abfragen/aufrufen ??

Bitte um Hilfe :)

Quack
Logged

Denn sie wissen nicht was sie tuen....


.Project : Blindguarstaff [ ]

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 266
Posts: 21644
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Du hast die Funktion distanceToAudiosignales; nicht richtig deklariert.
Grüße Uwe
Logged

AllemaniA
Offline Offline
Newbie
*
Karma: 0
Posts: 32
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

uwe habs jetzt geschafft hab nur noch einen Fehler im compiler
sketch_jan07a:81: error: expected unqualified-id before '{' token

was bedeutet das was ist die erwartetet unqualified id ?
Logged

Denn sie wissen nicht was sie tuen....


.Project : Blindguarstaff [ ]

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 266
Posts: 21644
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bitte den Sketch.
Grüße Uwe
Logged

AllemaniA
Offline Offline
Newbie
*
Karma: 0
Posts: 32
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Code:
const int pingPin = 7;
int speaker = 3;
int distance;

void setup() {
  // initialize serial communication:
  Serial.begin(9600);
}

void loop()
{
  // establish variables for duration of the ping,
  // and the distance result in inches and centimeters:
  long duration, cm;

  // The PING))) is triggered by a HIGH pulse of 2 or more microseconds.
  // Give a short LOW pulse beforehand to ensure a clean HIGH pulse:
  pinMode(pingPin, OUTPUT);
  pinMode(speaker, OUTPUT);
  digitalWrite(pingPin, LOW);
  delayMicroseconds(2);
  digitalWrite(pingPin, HIGH);
  delayMicroseconds(5);
  digitalWrite(pingPin, LOW);

  // The same pin is used to read the signal from the PING))): a HIGH
  // pulse whose duration is the time (in microseconds) from the sending
  // of the ping to the reception of its echo off of an object.
  pinMode(pingPin, INPUT);
  duration = pulseIn(pingPin, HIGH);

  // convert the time into a distance
  microsecondsToCentimeters(duration);
 
 
  Serial.print(cm);
  Serial.print("cm");
  Serial.println();
 
  delay(100);
}



 long microsecondsToCentimeters (long microseconds)
{
  // The speed of sound is 340 m/s or 29 microseconds per centimeter.
  // The ping travels out and back, so to find the distance of the
  // object we take half of the distance travelled.
  return microseconds / 29 / 2;
  }
 
 // Umwandlung der Ton Information in Töne
 long distanceToAudiosignales( long distance) ;
{
  if ((distance <= 50) && ( distance >= 35));
  tone(3, 50,1000);
  delay (1000);
  if ((distance <= 34) && ( distance >= 20));
  tone(3,40,500);
  delay(1000);
  if ((distance <= 19) && ( distance >= 10));
  tone(3,35,420);
  delay(300);
  if ((distance <=9) && ( distance >= 5));
  tone(3,30,300);
  delay (100);
  }
 
/code] hier
Logged

Denn sie wissen nicht was sie tuen....


.Project : Blindguarstaff [ ]

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 266
Posts: 21644
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Der Fehler ist hier:
long distanceToAudiosignales( long distance) ;
{

Der Strichpunkt muß weg.

Grüße Uwe
Logged

AllemaniA
Offline Offline
Newbie
*
Karma: 0
Posts: 32
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

jop hab ich auch gerade gemerkt nur iwie kommt beim serialmonitor jetzt nur noch nullen also 0cm raus obwohl ich diesen kern überhaupt nicht geändert habe
Logged

Denn sie wissen nicht was sie tuen....


.Project : Blindguarstaff [ ]

AllemaniA
Offline Offline
Newbie
*
Karma: 0
Posts: 32
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

wie kann ich denn ganz oben bei der variablen Deklaration die Distanz als unbestimmt setzen ? oder als abhängig von anderen werten ?
Logged

Denn sie wissen nicht was sie tuen....


.Project : Blindguarstaff [ ]

Germany
Offline Offline
Faraday Member
**
Karma: 59
Posts: 3050
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
wie kann ich denn ganz oben bei der variablen Deklaration die Distanz als unbestimmt setzen ? oder als abhängig von anderen werten ?
Verstehe ich nicht. Die Variable cm ist nach der Deklaration als Typ int oben in loop im Wert erstmal unbestimmt.
Quote
iwie kommt beim serialmonitor jetzt nur noch nullen also 0cm raus

Normalwerweise ruft man Funktionen, die einen Wert zurückliefern, so auf:
Code:
  // convert the time into a distance
  cm = microsecondsToCentimeters(duration);

Ausserdem denke ich, da sind auch noch zu viele Semikolons nach den if.
Du meinst doch sicher:
Code:
 
if ((distance <= 50) && ( distance >= 35)) {
     tone(3, 50,1000);
     delay (1000);
  }
if (( distance < 35) && (distance >= .....
Logged

Pages: [1]   Go Up
Jump to: