Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 20 kwi 2024, o 16:02


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 17 ] 
Autor Wiadomość
PostNapisane: 26 wrz 2012, o 20:45 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 12 paź 2011
Posty: 780
Pomógł: 20

Witam

Zacząłem bawić się Arduino i Korzystam z dodatkowej płyty uruchomieniowej gdzie podłączam na niej przyciski obserwuję taki objaw iż po przysunięciu ręki do przycisku układ jak by się wyzwala nie wiem co może być przyczyną.

Wszystko zasilam z arduino GND i VCC są połączone ze sobą (między płytkami)

Wystarczy że dotknę przewód nawet nie naciskając przycisku

Pozdrawiam

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 wrz 2012, o 20:59 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 14 lut 2012
Posty: 598
Lokalizacja: Warszawa
Pomógł: 13

Bo pewnie pin jest w tzw. HZ i jako wejście ustawiony, i nie bardzo rozumiem czemu w "rybnym" piszesz bo tutaj, to sie oczekuje na gotowe kody ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 wrz 2012, o 21:25 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 12 paź 2011
Posty: 780
Pomógł: 20

Nie ma tam stanu wysokiej impedancji bo ustawiam co jest wejściem a co wyjściem :)

Niestety za bardzo nie wiedziałem w jakim dziale to napisać :)
Składnia: [ Pobierz ] [ Ukryj ]
język cpp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 wrz 2012, o 21:35 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 24 cze 2012
Posty: 414
Lokalizacja: Oborniki
Pomógł: 5

No tak, ale poza tym, że ustawiasz pin jako wejście, powinieneś podciągnąć go do plusa :) Nie wiem czy to się różni w Arduino, ale powinno być DDRx jako 0 i PORTx jako 1, a Ty pewnie masz to jako 0 i 0 :)


Autor postu otrzymał pochwałę

_________________
Pozdrawiam:
Mikołaj



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 wrz 2012, o 21:41 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 14 lut 2012
Posty: 598
Lokalizacja: Warszawa
Pomógł: 13

Michał ma rację

digitalWrite(buttonPin,HIGH) o ile się nie myle ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 wrz 2012, o 21:49 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 paź 2011
Posty: 8583
Pomógł: 337

czekaj czekaj a dlaczego tak dziwnie definiujesz te piny ??

skąd ci się to wzięło ??

Kod:
const int buttonPin = A2;     // the number of the pushbutton pin
const int ledPin =  A3;      // the number of the LED pin


czemu na analogach ??


jak chcesz mieć na na A3 diodę to prosze bardzo zdefiniuj sobie ten pin tak

popatrz masz tak :

Pin 14 = Analog in 0
Pin 15 = Analog in 1
Pin 16 = Analog in 2
Pin 17 = Analog in 3
Pin 18 = Analog in 4
Pin 19 = Analog in 5

czyli piszesz :

ledPin = 16


domyślnie jest ustawiany jako digital I/O 16

podobnie z butonem


buttonPin = 17

i teraz korzystasz do woli z poleceń :

DigitalRead i DigitalWrite

pierwszego używasz do odczytu przycisku
a drugiego jako wyjście dla diody


Autor postu otrzymał pochwałę

_________________
[b]San Escobar! Patria mia! Tu eres como la salud.[/b]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 wrz 2012, o 21:56 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 12 paź 2011
Posty: 780
Pomógł: 20

Dziękuję Panowie :D

tak wygląda kozik :)
Składnia: [ Pobierz ] [ Ukryj ]
język cpp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


W funkcji Setup dodałem zaznaczona linię tutaj ta funkcja wykonuje się raz i w niej się robi wszystkie inicjacje co ciekawe twórcy nie uwzględni tego :)

Pozdrawiam i dziękuję za pomoc :)

------------------------ [ Dodano po: 3 minutach ]

Czyli samo ButtonPin i LedPin określa już konfigurację i nie trzeba ręcznie tego robić poprzez DigitalWrite ?

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 wrz 2012, o 14:30 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 paź 2011
Posty: 8583
Pomógł: 337

funkcja DigitalWrite(pin, stan); ustawia kierunek pinu na Wyjście i powoduje ustawienie w nim odpowiedniego stanu
natomiast funkcja DigitalRead() ; działa odwrotnie taka specyfika języka Arduino

podobnie masz też funkcje dla portów analogowych .... AnalogRead() a, AnalogWrite(); stosuje się do PWM
zawsze warto skorzystać z referencji języka C++ dla Arduino , dostępnego na arduino.cc


dodatkowo jeśli chodzi o piny cyfrowe to jeszcze jest coś takiego jak PinMode()
którym możesz jednoznacznie na starcie programu ustalić na sztywno stan początkowy pinu
tak by czasem nie pojawiały się na nim stany nieustalone

np:

Składnia: [ Pobierz ] [ Ukryj ]
język cpp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Widzisz ??

_________________
[b]San Escobar! Patria mia! Tu eres como la salud.[/b]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 wrz 2012, o 14:38 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 14 lut 2012
Posty: 598
Lokalizacja: Warszawa
Pomógł: 13

Łooo tego to nie wiedziałem ......... i poszedłem jak w avr ;)
Ehh człek się całe życie uczy ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 wrz 2012, o 14:43 
Offline
Użytkownik

Dołączył(a): 24 sty 2012
Posty: 1469
Pomógł: 56

Malutki_27 napisał(a):
Łooo tego to nie wiedziałem ......... i poszedłem jak w avr ;)
Ehh człek się całe życie uczy ;)

Raczej jak w zwykłym C ;) Bo akurat i tu i tu jest AVR :P

_________________
Jestem początkujący i moje porady mogą być błędne



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 wrz 2012, o 14:47 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 14 lut 2012
Posty: 598
Lokalizacja: Warszawa
Pomógł: 13

Tej czepialski :P



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 wrz 2012, o 14:47 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 paź 2011
Posty: 8583
Pomógł: 337

szablon programu w Arduino jest bardzo prosty i wymaga niewiele do działania :


Składnia: [ Pobierz ] [ Ukryj ]
język cpp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Jak widać jest to banalne

_________________
[b]San Escobar! Patria mia! Tu eres como la salud.[/b]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 wrz 2012, o 14:54 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 12 paź 2011
Posty: 780
Pomógł: 20

No fajnie dokładnie takim kodem jak kolega pokazuje bawiłem się i nawet powstało praktyczne zastosowanie takiego kodu :)

Ale dziwi mnie tylko jedno że skoro

pinMode zapobiega stanowi nie ustalonemu
to czemu musiałem dodać w setupie

Składnia: [ Pobierz ] [ Ukryj ]
język cpp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Składnia: [ Pobierz ] [ Ukryj ]
język cpp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Chyba jedyne wyjaśnianie może być w linku do szczegółowego kodu

http://www.arduino.cc/en/Tutorial/Button

jak widać na obrazku switch podciągnięty jest do GND poprzez rezystor wymuszając na nim już stan ?

Pozdrawiam i dziękuje za pomoc :)

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 wrz 2012, o 14:58 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 paź 2011
Posty: 8583
Pomógł: 337

dokładnie o to chodzi żeby dioda się świeciła od razu czyli żeby był na pinie od razu stan HIGH bo domyślnie w Arduino
piny Digital I/O są zawsze w stanie niskim (low)

_________________
[b]San Escobar! Patria mia! Tu eres como la salud.[/b]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 wrz 2012, o 15:11 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 12 paź 2011
Posty: 780
Pomógł: 20

Dzięki za pomoc :)

Dalej będę się bawił :D

Składnia: [ Pobierz ] [ Ukryj ]
język cpp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Pozdrawiam :)

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 wrz 2012, o 15:15 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 paź 2011
Posty: 8583
Pomógł: 337

a jeszcze cały twój kod można zrobić tak :)

http://tinyurl.com/bp2dl6n


Poczytaj sobie moja stronkę wiele ci się rozjaśni :)

_________________
[b]San Escobar! Patria mia! Tu eres como la salud.[/b]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 wrz 2012, o 15:38 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 12 paź 2011
Posty: 780
Pomógł: 20

Bardzo dziękuję ale jestem nieco leniwy i nie chce mi się kombinować z dodatkowym rezystorem ;) bo w zestawie uruchomieniowym mam bezpośrednio podłączone switche do GND :)

Aczkolwiek warto wiedzieć że można to zrobić na kilka sposobów :) i zapewne skorzystam z obu :)

dziękuję za artykuł

Pozdrawiam

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 17 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 1 gość


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO