Az SOS+ csipogó programmal elakadtam. A probléma az hogy a pont, pont, pont, után a program nem lép tovább a vonás, vonás, vonásra, és tovább. Mit rontottam el?
Kód: Egész kijelölése
[code]
unsigned int var = 2000;
//varakozas jelvaltasnal
unsigned long tartam = 100000;
//ennyi ideig szoljon
unsigned long temp1long;
//segedvaltozo
#define Speaker 10
// melyik labon szol a csipogo
void setup() {
pinMode(13, OUTPUT);
// 13 lab led
pinMode(Speaker, OUTPUT);
// 10 lab csipogo kimenet
delayMicroseconds(var);
// ennyit kel varni ket valtas kozott
}
void loop() {
//...---...
pont();
delay(50);
pont();
delay(50);
pont();
delay(50);
vonas();
delay(50);
vonas();
delay(50);
vonas();
delay(50);
pont();
delay(50);
pont();
delay(50);
pont();
delay(2500);
}
void pont() {
digitalWrite(13, HIGH);
// led be
delay(250);
// var
digitalWrite(13, LOW);
// led ki
temp1long = tartam/ (var * 2);
// ennyi impulzust kell kiadni
while (temp1long != 0) {
//ismeteld, amig a feltetel igaz
digitalWrite(Speaker, LOW);
// hangszoro alacsony
delayMicroseconds(var);
// varakozas valtas kozott
digitalWrite(Speaker, HIGH);
// hangszoro magas
delayMicroseconds(var);
// varakozas valtas kozott
temp1long = temp1long - 1;
}
digitalWrite(13, LOW);
}
void vonas() {
digitalWrite(13, HIGH);
// led be
delay(1000);
// varakozas
digitalWrite(13, LOW);
// led ki
temp1long = tartam/ (var * 2);
// ennyi darab imoulzust kell kiadni
temp1long = temp1long * 4;
// a vonas 4 x hosszabb mint a pont
while (temp1long != 0);
// ismeteld amig a feltetel igaz
digitalWrite(Speaker, LOW);
// hangszoro alacsony
delayMicroseconds(var);
// varakozas valtas kozott
temp1long = temp1long - 1;
digitalWrite(13, LOW);
}