Arduino Polska Forum

Pełna wersja: pomoc przyciski arudino
Aktualnie przeglądasz uproszczoną wersję forum. Kliknij tutaj, by zobaczyć wersję z pełnym formatowaniem.
Witam, jestem raczej początkującym posiadaczem arduino nano i uno. Z okazji walentynek stworzyłem projekt serca z adresowalnych diód RGB WS2811. Lecz mam problem. Diody są sterowane tylko jednym przewodem wchodzącym do arduino zasilanie również z arduino a ono same zasilaczem lub bateriami sam jeszcze  nie zdecydowałem. Problem tkwi gdyż chciałbym wyprowadzić przyciski na zewnątrz aby mozna było włączyc 2 tryby jedne przycisk to efekty różne przejsca świetlne z diód a drugi guzik to spokojne zmienianie kolorów. Jestem początkujący i oglądałem wiele filmików ale nie odnalazłem swojego problemu. Jak podpiąć i jak zaprogramować aby w jednym guziku wpisać odpowiednie funkcje a w drugim inne funkcje od diód aby jak włączę jeden a następnie drugi tryb to się przełączyło.  Oraz jakie wybrać przyciski.Jeśli już coś było podobnego to z góry przepraszam i dziękuję za pomoc.  
1. Guziki masz w spodniach. To, o czym mówisz, to przyciski.
2. 'Diod', nie 'diód'.
3. Jakie dobierzesz przyciski, to już Twoja sprawa, zresztą zależeć to będzie od Twojego projektu (chodzi głównie o wygląd).
Przyciski deklarujesz (w funkcji setup) jako INPUT_PULLUP. Być może o tym wiesz, ale wolałem napisać, bo wspomniałeś, że jesteś początkujący (choć, jako początkujący, nie zajmowałbym się diodami adresowalnymi).
Jak rozwiązać Twój problem? Możesz zrobić tak, że wciśnięcie danego przycisku zmieni wartość zmiennej (np. funkcja1, funkcja2). W programie, w zależności od wartości zmiennej, niech uruchamia się dana funkcja.
Dla przykładu, dla przycisków wpiętych w piny 10 i 11, funkcji świetlnych jest 6 (0-5), podobnie jak kombinacji kolorów (0-5):
Kod:
int przycisk1=10;
int przycisk2=11;
int funkcja1=0;
int funkcja2=0;

void setup(){
pinMode(przycisk1,INPUT_PULLUP);
pinMode(przycisk2, INPUT_PULLUP);
}

void loop(){
if(digitalRead(przycisk1)==LOW){
funkcja1++;
if(funkcja1>5){
funkcja1=0;
}
while(digitalRead(przycisk1)==LOW){}
}
if(digitalRead(przycisk2)==LOW){
funkcja2++;
if(funkcja2>5){
funkcja2=0;
}
while(digitalRead(przycisk1)==LOW){}
}

switch (funkcja1) {
  case 1:
    // jakaś Twoja pierwsza funkcja
    break;
  case 2:
    // jakaś Twoja druga funkcja
    break;
  case 3:
    // jakaś Twoja trzecia funkcja
    break;
  case 4:
    // jakaś Twoja czwarta funkcja
    break;
  case 5:
    // jakaś Twoja piąta funkcja
    break;
  default:
    // jakaś Twoja domyślna funkcja
  break;
}

switch (funkcja2) {
  case 1:
    // jakaś Twoja pierwsza kombinacja kolorów
    break;
  case 2:
    // jakaś Twoja druga kombinacja kolorów
    break;
  case 3:
    // jakaś Twoja trzecia kombinacja kolorów
    break;
  case 4:
    // jakaś Twoja czwarta kombinacja kolorów
    break;
  case 5:
    // jakaś Twoja piąta kombinacja kolorów
    break;
  default:
    // jakaś Twoja domyślna kombinacja kolorów
  break;
}
}
Mogą być gdzieś literówki, bo piszę z pamięci.
Przy okazji, ciekawy pomysł. Upieczesz dwie pieczenie na jednym ogniu: nauczysz się trochę programowania i automatyki, no i zachwycisz dziewczynę Smile