Skocz do zawartości

Kurs Arduino II - #5 - klawiatura, własny system alarmowy


Komentator

Pomocna odpowiedź

@tomica28, witam na forum 😉 Widzę, że to Twoje pierwsze kroki na Forbocie, oto najważniejsze informacje na start:

  • Chcesz przywitać się z innymi członkami naszej społeczności? Skorzystaj z tematu powitania użytkowników.
  • Opis najciekawszych funkcji, które ułatwiają korzystanie z forum znajdziesz w temacie instrukcja korzystania z forum - co warto wiedzieć?
  • Poszczególne posty możesz oceniać (pozytywnie i negatywnie) za pomocą reakcji - ikona serca w prawym dolnym rogu każdej wiadomości.
Dnia 15.11.2018 o 16:31, tomica28 napisał:

W kodzie jest błąd, ponieważ po wpisaniu pinu i ponownym uzbrojeniu ,i próbie wpisania pinu licznik pozycji nie jest przywracany do pozycji początkowej, co powoduje wywołanie alarmu

Chodzi Ci o program z kursu, czy o program umieszczony przez innych użytkowników w komentarzach?

Link do komentarza
Share on other sites

Hej,

Chcąc załadować program 


#include <Keypad.h> //biblioteka od klawiatury
 
const byte ROWS = 4; // ile wierszy
const byte COLS = 4; //ile kolumn
 
byte rowPins[ROWS] = {5, 4, 3, 2}; //piny wierszy
byte colPins[COLS] = {6, 7, 8, 9}; //piny kolum
 
char keys[ROWS][COLS] = { //mapowanie klawiatury
  {'1','2','3','A'},
  {'4','5','6','B'},
  {'7','8','9','C'},
  {'*','0','#','D'}
};
 
Keypad klawiatura = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS ); //inicjalizacja klawiatury
 
void setup(){
  Serial.begin(9600);
}
  
void loop(){
  char klawisz = klawiatura.getKey();
  
  if (klawisz){
    Serial.println(klawisz);
  }
}


Wyskoczył błąd, że podana biblioteka Keypad nie istnieje. Znalazłem tę bibliotekę pod inna nazwą "Keyboard", załadowałem ją i zmieniłem linijkę:

Keypad klawiatura = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );

na:

Keyboard klawiatura = Keyboard( makeKeymap(keys), rowPins, colPins, ROWS, COLS );

Teraz wyskakuje błąd:

Arduino:1.8.5 (Windows 7), Płytka:"Arduino/Genuino Uno"

In file included from C:\Users\MICHA~1\AppData\Local\Temp\arduino_modified_sketch_828268\sketch_dec02b.ino:1:0:

E:\Elektronika\Arduino\libraries\Keyboard\src/Keyboard.h:29:2: warning: #warning "Using legacy HID core (non pluggable)" [-Wcpp]

 #warning "Using legacy HID core (non pluggable)"

  ^

sketch_dec02b:17: error: 'Keyboard' does not name a type

 Keyboard klawiatura = Keyboard( makeKeymap(keys), rowPins, colPins, ROWS, COLS ); //inicjalizacja klawiatury

 ^

C:\Users\MICHA~1\AppData\Local\Temp\arduino_modified_sketch_828268\sketch_dec02b.ino: In function 'void loop()':

sketch_dec02b:24: error: 'klawiatura' was not declared in this scope

   char klawisz = klawiatura.getKey();

                  ^

exit status 1
'Keyboard' does not name a type

Ten raport powinien zawierać więcej informacji jeśli w 
File -> Preferencje zostanie włączona opcja "Pokaż
szczegółowe informacje podczas kompilacji"

Nie bardzo wiem o co chodzi 🙂 

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

@Mijaw92, witam na forum 😉 Widzę, że to Twoje pierwsze kroki na Forbocie, oto najważniejsze informacje na start:

  • Chcesz przywitać się z innymi członkami naszej społeczności? Skorzystaj z tematu powitania użytkowników.
  • Opis najciekawszych funkcji, które ułatwiają korzystanie z forum znajdziesz w temacie instrukcja korzystania z forum - co warto wiedzieć?
  • Poszczególne posty możesz oceniać (pozytywnie i negatywnie) za pomocą reakcji - ikona serca w prawym dolnym rogu każdej wiadomości.

Dnia 2.12.2018 o 21:00, Mijaw92 napisał:

Wyskoczył błąd, że podana biblioteka Keypad nie istnieje. Znalazłem tę bibliotekę pod inna nazwą "Keyboard", załadowałem ją i zmieniłem linijkę:

Jaką masz pewność, że to odpowiednia biblioteka? Jeśli wybrałeś inną bibliotekę to programy nie będą działały - zmiana nazwy to zdecydowanie za mało. Biblioteka używana w kursie jest cały czas dostępna na GitHubie - link znajduje się w artykule. Zainstaluj ją i na pewno wszystko zadziała 😉

Link do komentarza
Share on other sites

@brunobu, witam na forum 😉 Widzę, że to Twoje pierwsze kroki na Forbocie, oto najważniejsze informacje na start:

  • Chcesz przywitać się z innymi członkami naszej społeczności? Skorzystaj z tematu powitania użytkowników.
  • Opis najciekawszych funkcji, które ułatwiają korzystanie z forum znajdziesz w temacie instrukcja korzystania z forum - co warto wiedzieć?
  • Poszczególne posty możesz oceniać (pozytywnie i negatywnie) za pomocą reakcji - ikona serca w prawym dolnym rogu każdej wiadomości.

2 godziny temu, brunobu napisał:

@Treker mam pytanie czy dało by się dodać rysunki do drugiego kurs arduino tak jak w pierwszym?

O jakie rysunki dokładnie pytasz?

2 godziny temu, brunobu napisał:

@Mijaw92 mam tak samo i również nie wiem co zrobić

Zainstaluj poprawną bibliotekę i nie będzie problemu. To, że biblioteka nazywa się tak samo to nic nie znaczy. Trzeba zainstalować dokładnie tę, która jest używana w kursie (link do GitHuba znajduje się w artykule).

Link do komentarza
Share on other sites

Na ten moment nie planujemy takich schematów montażowych w tym kursie, ale zapisuję na listę sugestii. Jest szansa, że przy kolejnej aktualizacji uda się dodać takie grafiki. Mam jednak nadzieję, że na tym poziomie kursu (po wykonaniu ćwiczeń z poprzedniej serii) nie powinno być już większych problemów z samodzielnym złożeniem opisywanych tu układów na podstawie dostarczonych zdjęć i opisów 🙂

Link do komentarza
Share on other sites

Witam, przy próbie zrealizowania przycisku Reset za pomocą przerwania, układ wcale nie reaguje na wciśnięcie przycisku i alarm nadal jest włączony. Co może być tutaj problemem? Do tego mam jeszcze pytanie dotyczące kondensatora przy diodach programowalnych. W części gdzie były one omawiane zastosowano kondensator i rezystor. W tej części kursu nie został użyty kondensator (także użyłem tylko rezystora i wszystko działa). Mam jeszcze problem z drobnymi zakłóceniami na buzzerze bez generatora (bardzo cichy pisk o różnej intensywności, np. w trakcie stanu czuwania, kiedy dioda bardzo szybko miga buzzer bardzo cicho 'pipka' w tempie migania diody), jakie są metody na zniwelowanie takich zakłóceń? Materiał bardzo solidnie wytłumaczony, myśle że dobrym pomysłem są dłuższe programy. Poniżej załączam cały kod.

#include <Keypad.h>  //biblioteka ulatwiajaca kontakt z klawiatura
#include <Adafruit_NeoPixel.h>   //biblioteka od panelu z ledami

const byte ROWS = 4;   //ile wierszy
const byte COLS = 4;   //ile kolumn  //sa to stale dlatego const

byte rowPins[ROWS] = {5, 4, 3, 2};  //piny wierszy, chyba chodzi o to ze to wektor o wielkosci zadeklarowanej jako ROWS
byte colPins[COLS] = {6, 7, 8, 9};  //piny kolumn, wszystko widac na klawiaturze wystarczy sie przyjrzec

char keys[ROWS][COLS]=   //MAPOWANIE KLAWISZY, wychodzi na to ze to deklaracja macierzy o ROWS wierszach i COLS kolumnach składająca sięze znaków (char) o nazwie keys i wypisywane sa kolejne wiersze po przecinku 
  {
    {'1', '2', '3', 'A'},
    {'4', '5', '6', 'B'},
    {'7', '8', '9', 'C'},
    {'*', '0', '#', 'D'}
  };
  
  Keypad klawiatura = Keypad ( makeKeymap(keys), rowPins, colPins, ROWS, COLS);  //inicjalizacja klawiatury, po kolei mapa znakow klawiatury, piny wierszy, piny kolumn, liczba wierszy, liczba kolumn
  Adafruit_NeoPixel panelLED = Adafruit_NeoPixel(8, A1, NEO_GRB + NEO_KHZ800);
  
#define buzzer 13
#define kontaktron 10
#define czujnikRuchu 11
#define przyciskReset 1  //cos nie dziala 

char klawisz = 0; //zmienna typu znak, ktora przyjmuje wartosc znaku odpowiadajacego wcisnietemu klawiszowi, jezli zaden nie zostanie
int i=0;


volatile int stanAlarmu = 1;

byte pozycjaPinuAlarmu=1; //pozycja pinu, ktory musimy wpisac zeby bezpiecznei wejsc
char pinCyfra1 = '1';   //nasz pin uniewazniajacy alarm
char pinCyfra2 = '2';
char pinCyfra3 = '3';
char pinCyfra4 = '4';

int czasWpisywania = 0;   //czas wpisywania pinu, max mamy 5s, z kazdym wejsciem w case 3 mamy opoznienie 50ms i wtedy za kazdym razem dodajemy do tej zmiennej 50, kiedy bedzie 50000 to alarm

void setup() {

  attachInterrupt(digitalPinToInterrupt(przyciskReset), Reset, FALLING);
  
  Serial.begin(9600);
pinMode(buzzer, OUTPUT);             //ustawienie wyjsc/wejsc
pinMode(kontaktron, INPUT_PULLUP);
pinMode(czujnikRuchu, INPUT_PULLUP);
pinMode(przyciskReset, INPUT_PULLUP);  

panelLED.begin(); 
panelLED.show();



}

void loop() {
 

  switch (stanAlarmu)
  {
    case 1:    //stan 1 czyli czuwanie, system czeka na uzbrojenie (az bedziemy wychodzic z domu
      
        panelLED.setPixelColor(0, panelLED.Color(0, 20, 0)); //dioda swieci na zielono, system nie jest uzbrojony   
        panelLED.show();
        
        klawisz = klawiatura.getKey();
          if (klawisz=='A')  //jezeli wcisniemy A na klawiaturze to system przechodzi w 2gi stan
          {
            for( i=1; i<=7; i++)                   //taka animacja uzbrajania, ktora trwa ok. 10s
              {
                panelLED.setPixelColor(i, panelLED.Color(0, 0, 20));
                panelLED.show();
                tone(buzzer, (900+i*200),100);   //dzwiek do uzbrajania alarmu
                delay(710);
                
              }
            for(i=7; i>=1; i--) 
              {
                panelLED.setPixelColor(i, panelLED.Color(20, 0, 0));
                panelLED.show();
                tone(buzzer, (900+i*200),100);  //dzwiek do uzbrajania alarmu
                delay(710);
              }
            ZgaszeniePanelu();            
            stanAlarmu = 2;
            
            
          }
      break;
    case 2:   // stan 2 czyli uzbrojenie, uaktywnia sie on po wcisnieciu A na klawiaturze
        
        panelLED.setPixelColor(7, panelLED.Color(20, 0, 0));   //system uzbrojony, ostatnia dioda miga szybko na czerwono (zeby bylo widac ze sytem caly czas dziala
        panelLED.show();
        delay(50);
        panelLED.setPixelColor(7, panelLED.Color(0, 0, 0));
        panelLED.show();
        delay(50);  
       
          if(digitalRead(kontaktron)== HIGH)  //jezeli ktos otworzy drzwi - styki sie oddala, czyli stan wysoki bo nie laczy z masa to dajemy szanse na wpisanie kodu, czyli stan 3
            {
              stanAlarmu=3;
              czasWpisywania=0;
            }
              else
                {
                  if(digitalRead(czujnikRuchu)==HIGH) //jezeli czujnik wykryje ruch to stan 4 czyli od razu alarm
                  {
                    stanAlarmu=4;
                  }
                }

            
      
    
     break;
    case 3:
        delay(50);
        czasWpisywania=czasWpisywania+50;    
            
            klawisz = klawiatura.getKey();     //klawisz jest to znak, z klawisza ktory wciskamy (ten wynikajacy z mapowania
            if(klawisz)   //jezeli zostanie odebrana jakas wartosc z klawiatury
            {
              tone(buzzer, 1000, 50);
              if(pozycjaPinuAlarmu == 1 && klawisz == pinCyfra1)  //jezeli jestesmy na pozycji pierwszej i sie zgadza to idziemy dalej  jezeli nie od razu alarm itd
                {
                  
                  pozycjaPinuAlarmu=2;
                }
                  else
                  {
                    if(pozycjaPinuAlarmu == 2 && klawisz == pinCyfra2)
                      {
                        
                        pozycjaPinuAlarmu=3;
                      }
                        else
                          {
                              if(pozycjaPinuAlarmu == 3 && klawisz == pinCyfra3)
                                {
                                  
                                  pozycjaPinuAlarmu=4;             
                                      
                                 }
                                      else
                                        {
                                          if(pozycjaPinuAlarmu == 4 && klawisz == pinCyfra4)
                                            {
                                              
                                            
                                          pozycjaPinuAlarmu=1;
                                          stanAlarmu=1;
                                          delay(50);    //po to, zeby nie bylo charakterystycznej zmiany dzwieku na buzzerze przy ostatnim wcisnieciu                                      
                                            }
                                            else
                                            {
                                            stanAlarmu=4;
                                            }
                                        }
                          }

              }           
            }

            if(czasWpisywania >= 5000)  //jezeli zbyt dlugo wpisujemy (dluzej niz 5s) to wlacza sie alarm
            {
              stanAlarmu=4;
            }

      break;
    case 4:  //wlacza sie alarm
    
  for(i=0 ;i<=7;i=i+2)
        {
        panelLED.setPixelColor(i, panelLED.Color(255, 0, 0));
        panelLED.show();  
        panelLED.setPixelColor(i+1, panelLED.Color(0, 0, 255));
        panelLED.show();
        tone(buzzer, 3600+(i*100),40);
        delay(40);
        }
        
         for(i=6;i>=0;i=i-2)
            {
        panelLED.setPixelColor(i, panelLED.Color(0, 0, 255));
        panelLED.show();  
        panelLED.setPixelColor(i+1, panelLED.Color(255, 0, 0));
        panelLED.show();
        tone(buzzer, 3600+(i*100),40);
        delay(40);
       }      
   
      

    break;


    
  }

Serial.println(stanAlarmu);

}



    void ZgaszeniePanelu()
    {   
panelLED.clear();
panelLED.show();
    }

    void Reset()
    {
      stanAlarmu=1;
    }

 

Link do komentarza
Share on other sites

31 minut temu, ethanak napisał:

@Treker - nie da się jakoś tej informacji wpleść w kurs? Bo ja już tyle razy to piszę że chyba wrzucę sobie do sygnaturki 🙂

Będzie to (i nie tylko to) podczas wielkiego odświeżania kursu, ale trochę to jeszcze zajmie.

  • Lubię! 1
Link do komentarza
Share on other sites

@ethanak  Racja, zapomniałem usunąć tej linijki. Jednak po usunięciu problem nadal występuje, wiem że piny 0 i 1 są też wykorzystywane przy wgrywaniu programu na płytkę, a to udało się zrobić. Dla pewności sprawdziłem jeszcze czy bez jakiejkolwiek komunikacji z komputerem układ będzie działał poprawnie (podłączenie tylko do zasilacza) i przycisk resetu wtedy także nie działa. Dodam jeszcze, że z pinem 2 wszystko działa poprawnie, jednak nie rozumiem dlaczego bez komunikacji z komputerem wykorzzystanie pinu 1 także jest kłopotliwe.  Załączam jeszcze poprawiony kod. Cała reszta systemu oprócz przycisku Resetu działa prawiodłowo.

#include <Keypad.h>  //biblioteka ulatwiajaca kontakt z klawiatura
#include <Adafruit_NeoPixel.h>   //biblioteka od panelu z ledami

const byte ROWS = 4;   //ile wierszy
const byte COLS = 4;   //ile kolumn  //sa to stale dlatego const

byte rowPins[ROWS] = {5, 4, 3, 2};  //piny wierszy, chyba chodzi o to ze to wektor o wielkosci zadeklarowanej jako ROWS
byte colPins[COLS] = {6, 7, 8, 9};  //piny kolumn, wszystko widac na klawiaturze wystarczy sie przyjrzec

char keys[ROWS][COLS]=   //MAPOWANIE KLAWISZY, wychodzi na to ze to deklaracja macierzy o ROWS wierszach i COLS kolumnach składająca sięze znaków (char) o nazwie keys i wypisywane sa kolejne wiersze po przecinku 
  {
    {'1', '2', '3', 'A'},
    {'4', '5', '6', 'B'},
    {'7', '8', '9', 'C'},
    {'*', '0', '#', 'D'}
  };
  
  Keypad klawiatura = Keypad ( makeKeymap(keys), rowPins, colPins, ROWS, COLS);  //inicjalizacja klawiatury, po kolei mapa znakow klawiatury, piny wierszy, piny kolumn, liczba wierszy, liczba kolumn
  Adafruit_NeoPixel panelLED = Adafruit_NeoPixel(8, A1, NEO_GRB + NEO_KHZ800);
  
#define buzzer 13
#define kontaktron 11
#define czujnikRuchu 12
#define przyciskReset 1  

char klawisz = 0; //zmienna typu znak, ktora przyjmuje wartosc znaku odpowiadajacego wcisnietemu klawiszowi, jezli zaden nie zostanie
int i=0;


volatile int stanAlarmu = 1;

byte pozycjaPinuAlarmu=1; //pozycja pinu, ktory musimy wpisac zeby bezpiecznei wejsc
char pinCyfra1 = '1';   //nasz pin uniewazniajacy alarm
char pinCyfra2 = '2';
char pinCyfra3 = '3';
char pinCyfra4 = '4';

int czasWpisywania = 0;   //czas wpisywania pinu, max mamy 5s, z kazdym wejsciem w case 3 mamy opoznienie 50ms i wtedy za kazdym razem dodajemy do tej zmiennej 50, kiedy bedzie 50000 to alarm

void setup() {

  attachInterrupt(digitalPinToInterrupt(przyciskReset), Reset, FALLING);
  

pinMode(buzzer, OUTPUT);             //ustawienie wyjsc/wejsc
pinMode(kontaktron, INPUT_PULLUP);
pinMode(czujnikRuchu, INPUT_PULLUP);
pinMode(przyciskReset, INPUT_PULLUP);  

panelLED.begin(); 
panelLED.show();



}

void loop() {
 

  switch (stanAlarmu)
  {
    case 1:    //stan 1 czyli czuwanie, system czeka na uzbrojenie (az bedziemy wychodzic z domu
        
        panelLED.setPixelColor(0, panelLED.Color(0, 20, 0)); //dioda swieci na zielono, system nie jest uzbrojony   
        panelLED.show();
        
        klawisz = klawiatura.getKey();
          if (klawisz=='A')  //jezeli wcisniemy A na klawiaturze to system przechodzi w 2gi stan
          {
            for( i=1; i<=7; i++)                   //taka animacja uzbrajania, ktora trwa ok. 10s
              {
                panelLED.setPixelColor(i, panelLED.Color(0, 0, 20));
                panelLED.show();
                tone(buzzer, (900+i*200),100);   //dzwiek do uzbrajania alarmu
                delay(710);
                
              }
            for(i=7; i>=1; i--) 
              {
                panelLED.setPixelColor(i, panelLED.Color(20, 0, 0));
                panelLED.show();
                tone(buzzer, (900+i*200),100);  //dzwiek do uzbrajania alarmu
                delay(710);
              }
            ZgaszeniePanelu();            
            stanAlarmu = 2;
            
            
          }
      break;
    case 2:   // stan 2 czyli uzbrojenie, uaktywnia sie on po wcisnieciu A na klawiaturze
        
        panelLED.setPixelColor(7, panelLED.Color(20, 0, 0));   //system uzbrojony, ostatnia dioda miga szybko na czerwono (zeby bylo widac ze sytem caly czas dziala
        panelLED.show();
        delay(50);
        panelLED.setPixelColor(7, panelLED.Color(0, 0, 0));
        panelLED.show();
        delay(50);  
       
          if(digitalRead(kontaktron)== HIGH)  //jezeli ktos otworzy drzwi - styki sie oddala, czyli stan wysoki bo nie laczy z masa to dajemy szanse na wpisanie kodu, czyli stan 3
            {
              stanAlarmu=3;
              czasWpisywania=0;
            }
              else
                {
                  if(digitalRead(czujnikRuchu)==HIGH) //jezeli czujnik wykryje ruch to stan 4 czyli od razu alarm
                  {
                    stanAlarmu=4;
                  }
                }

            
      
    
     break;
    case 3:
        delay(50);
        czasWpisywania=czasWpisywania+50;    
            
            klawisz = klawiatura.getKey();     //klawisz jest to znak, z klawisza ktory wciskamy (ten wynikajacy z mapowania
            if(klawisz)   //jezeli zostanie odebrana jakas wartosc z klawiatury
            {
              tone(buzzer, 1000, 50);
              if(pozycjaPinuAlarmu == 1 && klawisz == pinCyfra1)  //jezeli jestesmy na pozycji pierwszej i sie zgadza to idziemy dalej  jezeli nie od razu alarm itd
                {
                  
                  pozycjaPinuAlarmu=2;
                }
                  else
                  {
                    if(pozycjaPinuAlarmu == 2 && klawisz == pinCyfra2)
                      {
                        
                        pozycjaPinuAlarmu=3;
                      }
                        else
                          {
                              if(pozycjaPinuAlarmu == 3 && klawisz == pinCyfra3)
                                {
                                  
                                  pozycjaPinuAlarmu=4;             
                                      
                                 }
                                      else
                                        {
                                          if(pozycjaPinuAlarmu == 4 && klawisz == pinCyfra4)
                                            {
                                              
                                            
                                          pozycjaPinuAlarmu=1;
                                          stanAlarmu=1;
                                          delay(50);    //po to, zeby nie bylo charakterystycznej zmiany dzwieku na buzzerze przy ostatnim wcisnieciu                                      
                                            }
                                            else
                                            {
                                            stanAlarmu=4;
                                            }
                                        }
                          }

              }           
            }

            if(czasWpisywania >= 5000)  //jezeli zbyt dlugo wpisujemy (dluzej niz 5s) to wlacza sie alarm
            {
              stanAlarmu=4;
            }

      break;
    case 4:  //wlacza sie alarm
    
  for(i=0 ;i<=7;i=i+2)
        {
        panelLED.setPixelColor(i, panelLED.Color(255, 0, 0));
        panelLED.show();  
        panelLED.setPixelColor(i+1, panelLED.Color(0, 0, 255));
        panelLED.show();
        tone(buzzer, 3600+(i*100),40);
        delay(40);
        }
        
         for(i=6;i>=0;i=i-2)
            {
        panelLED.setPixelColor(i, panelLED.Color(0, 0, 255));
        panelLED.show();  
        panelLED.setPixelColor(i+1, panelLED.Color(255, 0, 0));
        panelLED.show();
        tone(buzzer, 3600+(i*100),40);
        delay(40);
       }      
   
      

    break;

  case 5:
  ZgaszeniePanelu();
  stanAlarmu=1;
  break;

    
  }

Serial.println(stanAlarmu);

}



    void ZgaszeniePanelu()
    {   
panelLED.clear();
panelLED.show();
    }

    void Reset()
    {
      
      stanAlarmu=5;
      
    }

 

Link do komentarza
Share on other sites

5 minut temu, damianloew napisał:

Dla pewności sprawdziłem jeszcze czy bez jakiejkolwiek komunikacji z komputerem układ będzie działał poprawnie (podłączenie tylko do zasilacza) i przycisk resetu wtedy także nie działa

Piny 0 i 1 są (w uproszczeniu, dotyczy Arduino UNO i całej reszty na ATmega 328) używane:

  • do wgrywania programu na płytkę
  • do komunikacji Serial
  • jako piny GPIO ogólnego przeznaczenia

Przy czym:

  • Jeśli coś jest podłączone do tych pinów, należy odłączyć to coś na czas wgrywania programu (nie zawsze jest to konieczne, ale warto się przyzwyczaić)
  • Jeśli używamy w programie Serial.cośtam() nie możemy z oczywistych przyczyn użyć tych pinów do innych celów.

Ogólnie: jeśli nie musimy, to nie używamy w programie tych pinów do innych rzeczy niż Serial, a jeśli już - to z pełną świadomością.

Nie jestem pewien, jak Arduino zareaguje na niezainicjalizowany Serial, ale została Ci jeszcze jedna linijka Serial.println().

 

  • Lubię! 2
Link do komentarza
Share on other sites

@ethanak Usunąłem linijkę Serial.println z kodu oraz na czas wgrywania programu odłączyłem przewód z pinu 1. Nadal układ nie reaguje w żaden sposób na wciśnięcie przycisku. Dzięki za odpowiedzi, nie wiem dlaczego nadal przerwanie nie działa,  może w jakiś inny sposób użycie tego pinu nie jest możliwe. Na przyszłość będę unikał takich sytuacji.

Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.