09-02-2026, 20:52
Cześć
Od kilku miesięcy uczę się programować.
Powoli robię coraz bardziej skomplikowane kody.
Zaczynałem od świecącej diody, potem przycisk, miganie, dwie diody oddzielnie, buzzer.
Jakiś czas temu syn kupił sobie auto zdalnie sterowane. Bez bajerów. Pomyślałem, że zrobię kod do sterowania oświetleniem i buzzerem.
Na razie dla jednego kanału wszystko działa, ale jak próbuje dwa kody połączyć w jeden by na jednym kanałem włączyć diodę a drugim wlaczyć buzzer to nie mogę tego ogarnać.
Osobno na oddzielnych kodach wszystko działa poprawnie.
Kod poniżej:
Co poprawić by dwa kanały działały niezależnie?
Potem będę próbował dodać kolejne.
Serwo i ślinik steruje bezpośrednio z odbiornika 8 kanałowego nie będę przepuszczał przez zestaw Arduino.
Od kilku miesięcy uczę się programować.
Powoli robię coraz bardziej skomplikowane kody.
Zaczynałem od świecącej diody, potem przycisk, miganie, dwie diody oddzielnie, buzzer.
Jakiś czas temu syn kupił sobie auto zdalnie sterowane. Bez bajerów. Pomyślałem, że zrobię kod do sterowania oświetleniem i buzzerem.
Na razie dla jednego kanału wszystko działa, ale jak próbuje dwa kody połączyć w jeden by na jednym kanałem włączyć diodę a drugim wlaczyć buzzer to nie mogę tego ogarnać.
Osobno na oddzielnych kodach wszystko działa poprawnie.
Kod poniżej:
Kod:
const int pinRC5 = 5; // Kanał 5
const int pinRC6 = 6; // Kanał 6
const int led1 = 8;
const int led2 = 9;
const int buzzerPin = 12; // Pin buzzera
const int buttonPin = 2; // pin przycisku – nie używany - testowy
int buttonState = 0; // zmienna do odczytu stanu przycisku - testowy
unsigned long czas4, czas5, czas6;
unsigned long previousMillis = 0;
const unsigned long interval = 40; // czas między zmianami stanu diody
int stepCounter = 0; // krok sekwencji
bool ledState = false;
// Parametry syreny
unsigned long lastToneChange = 0;
unsigned long toneInterval = 5; // co ile ms zmieniać częstotliwość
int toneFreq = 400; // aktualna częstotliwość
int toneStep = 15; // krok zmiany częstotliwości
int minFreq = 400; // dolny zakres
int maxFreq = 1000; // górny zakres
bool freqUp = true; // kierunek zmiany częstotliwości
void setup() {
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(pinRC5, INPUT);
pinMode(pinRC6, INPUT);
pinMode(buzzerPin, OUTPUT);
pinMode(buttonPin, INPUT_PULLUP);
Serial.begin(9600);
}
void loop()
{
czas5 = pulseIn(pinRC5, HIGH, 25000);
czas6 = pulseIn(pinRC6, HIGH, 25000);
unsigned long currentMillis = millis();
buttonState = digitalRead(buttonPin); // testowy
if (czas5 > 1700)
{
if (currentMillis - previousMillis >= interval)
{
previousMillis = currentMillis;
switch (stepCounter)
{
case 0: case 2: // dioda 1 miga dwa razy
ledState = !ledState;
digitalWrite(led1, ledState);
if (!ledState) stepCounter++;
break;
case 4: case 6: // dioda 2 miga dwa razy
ledState = !ledState;
digitalWrite(led2, ledState);
if (!ledState) stepCounter++;
break;
default:
stepCounter++;
if (stepCounter > 7) stepCounter = 0; // restart sekwencji
break;
}
}
else {digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
}
}
if (czas6 > 1700)
{ if (currentMillis - lastToneChange >= toneInterval) {
lastToneChange = currentMillis;
// Zmiana częstotliwości w górę/dół
if (freqUp) {
toneFreq += toneStep;
if (toneFreq >= maxFreq) freqUp = false;
} else {
toneFreq -= toneStep;
if (toneFreq <= minFreq) freqUp = true;
}
// Generowanie tonu
tone(buzzerPin, toneFreq);
}
}
else {noTone(buzzerPin);}
}Potem będę próbował dodać kolejne.
Serwo i ślinik steruje bezpośrednio z odbiornika 8 kanałowego nie będę przepuszczał przez zestaw Arduino.

