• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Dwa programy uruchamiane z dwóch przycisków
#1
Wykombinowałem program który miał uruchamiać podprogramy wyborem przycisku ale :
Po wgraniu i wciśnięciu przycisku podprogram uruchamia się tylko raz i blokuje całość programu nie działa nawet stop dla programu nie reaguje.

Jak to poprawnie napisać by działało z wyborem programu i jego zatrzymaniu ?




Kod:
// Dwa programy uruchamiane z dwóch przycisków //

int start1 = 2;
int start2 = 3;
int stop = 4;
int led1 = 0;
int led2 = 1;

void setup()
{
pinMode(start1, INPUT);
pinMode(start2, INPUT);
pinMode(stop, INPUT);
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
}

void loop()
{
if (digitalRead(start1) == HIGH && stop != LOW ) 
{
stop = LOW;
program1();
}
if (digitalRead(start2) == HIGH && stop != LOW ) 
{
stop = LOW;
program2();
}}

void program1()
{
  digitalWrite(led1, HIGH);   
  delay(1000);              
  digitalWrite(led1, LOW);    
  delay(1000);
}

void program2()
{
 for (int fadeValue = 0 ; fadeValue <= 255; fadeValue += 5) {
    analogWrite(led1, fadeValue);
    delay(30);
  }
  for (int fadeValue = 255 ; fadeValue >= 0; fadeValue -= 5) {
    analogWrite(led1, fadeValue);
    delay(30);
  }
    for (int fadeValue = 0 ; fadeValue <= 255; fadeValue += 5) {
    analogWrite(led2, fadeValue);
    delay(30);
  }
  for (int fadeValue = 255 ; fadeValue >= 0; fadeValue -= 5) {
    analogWrite(led2, fadeValue);
    delay(30);
}}
 
Odpowiedź
#2
Zapoznaj się z przykładem 02.Digital->BlinkWithoutDelay.
Pomagam za darmo więc szanuj mój czas.
Wklejaj tekst a nie jego zdjęcie.
Nie pisz następnego postu jak nie odpowiedziałeś na poprzedni.
Jak mądrze zadawać pytania
 
Odpowiedź
#3
(24-09-2017, 18:10)namok napisał(a): Zapoznaj się z przykładem 02.Digital->BlinkWithoutDelay.

To mi w niczym nie pomogło bo nawet nie wiem jak tego użyć.

Pokombinowałem i teraz jest wybór programu ale uruchamia się tylko raz


Kod:
// Dwa programy uruchamiane z dwóch przycisków //


int start1 = 2;
int start2 = 3;
int stop = 4;
int led1 = 0;
int led2 = 1;

void setup()
{
pinMode(start1, INPUT);
pinMode(start2, INPUT);
pinMode(stop, INPUT);
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
}

void loop()
{
if (digitalRead(start1) == HIGH && stop != LOW ) 
{

program1();
}
if (digitalRead(start2) == HIGH && stop != LOW ) 
{

program2();
}}

void program1()
{
  digitalWrite(led1, HIGH);   
  delay(1000);              
  digitalWrite(led1, LOW);    
  delay(1000);
}

void program2()
{
 for (int fadeValue = 0 ; fadeValue <= 255; fadeValue += 5) {
    analogWrite(led1, fadeValue);
    delay(30);
  }
  for (int fadeValue = 255 ; fadeValue >= 0; fadeValue -= 5) {
    analogWrite(led1, fadeValue);
    delay(30);
  }
    for (int fadeValue = 0 ; fadeValue <= 255; fadeValue += 5) {
    analogWrite(led2, fadeValue);
    delay(30);
  }
  for (int fadeValue = 255 ; fadeValue >= 0; fadeValue -= 5) {
    analogWrite(led2, fadeValue);
    delay(30);
}}
 
Odpowiedź
#4
(24-09-2017, 18:42)Bogdan 6 napisał(a): To mi w niczym nie pomogło bo nawet nie wiem jak tego użyć.
Poczytaj zatem o funkcji millis();.
Poza tym spróbuj rozrysować sobie działanie tego programu na kartce. Utwórz sobie pola, w które będziesz wpisywać wartości, i nazwij je tak, jak nazywasz zmienne. Potem, krok po kroku, wpisuj wartości zmiennych w odpowiednie pola i wyobrażaj sobie, że wciskasz przyciski, i sprawdzaj, na kartce, co zmienia się w Twoim programie. Będziesz wtedy wiedział, co, tak naprawdę, się w nim dzieje.
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości