• 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
Podświetlenie szuflad, LED fade
#11
pinMode(button, INPUT);
pinMode(button, OUTPUT);
digitalWrite(button, LOW);
tu zlikwidowałem hazard a mielenie ty cały czas powtarzasz elsa bez koca a ja to zabezpieczyłem wykonuje się tylko 1 raz(nie w tym kodzie co ci podałem),
co do stat to tak ma być bo gdybyś walnął kod na 100000 linijek i w nim użył po twojemu 100 razy ten sam port ale załóżmy z pinu 2 chcesz na 4 to 100 miejsc musisz zmienić a ja zmieniam 1.

a i masz racje 13 jest pod pwm
[Obrazek: banerelektronika.jpg]



Jeśli pomogłem podziękuj punktem reputacji Wink
 
Odpowiedź
#12
Dzięki Adix, masz ode mnie punkty jednak ja nadal nie wszystko rozumiem. 

1. Wiem już o co chodzi z mieleniem else ale nie mam pojęcia jak się tego pozbyć.

2. Nie rozumiem dlaczego na pin 0 do którego podłączony jest kontaktron (NO) ustawiłeś oprócz pinMode INPUT również OUTPUT i jeszcze digitalWrite LOW. (Tam normalnie jest LOW przy zamkniętej szufladzie i HIGH przy otwartej).

3. Pokazujesz mi, że zlikwidowałeś hazard ale ja ciągle nie wiem jaki.. Wybacz moją niekumatość Wink

Może wstawię mój gotowy, już działający kod. Na razie mam tylko 1 szufladę i wszystko działa ale kod już robię na dwie, i znów nie wiem co z drugim else..

Możesz rzucić okiem i tutaj nanieść poprawki?

Kod:
int drawer0reed = 0; //kontaktron1
int drawer1reed = 1; //kontaktron2
int drawer0 = 9; //szuflada1
int drawer1 = 10; //szuflada2
int fadeValue = 0;

void setup() {

pinMode(0, INPUT_PULLUP);
pinMode(1, INPUT_PULLUP);

}

void loop() {

if(digitalRead(drawer0reed) == HIGH){
 delay(300);
 while(fadeValue < 255){
   analogWrite(drawer0, fadeValue);
   fadeValue = fadeValue + 5 ;
   delay(30);
 
 }
}

else {

while(fadeValue > 0){
   analogWrite(drawer0, fadeValue);
   fadeValue = fadeValue - 5 ;
   delay(30);
 }
 analogWrite(drawer0, fadeValue); //musi być bo inaczej jest fadeValue 5 zamiast 0
}
}

Z góry dzięki, a jeśli nie masz już do mnie siły, zrozumiem  Wink
 
Odpowiedź
#13
Dobra już wiem że digitalWrite(low) wyłącza pullup, ale przecież on ani domyślnie, ani w moim kodzie nie był włączony. Teraz jest, ale tak ma być. W instrukcji też piszą, żeby lepiej używać pinMode (input_PULLUP) niż digitalWrite(HIGH).
A co do mielenia, to myślę że zamiast else dać znów if {state=1} po Twojemu, będzie dobrze?
 
Odpowiedź
#14
(06-07-2016, 02:01)rosak napisał(a): Dobra już wiem że digitalWrite(low) wyłącza pullup, ale przecież on ani domyślnie, ani w moim kodzie nie był włączony.
no właśnie i występował hazard czy wiesz co to drganie zestyków no chyba ze miałeś rezystor podciągający podłączony to ok

(06-07-2016, 02:01)rosak napisał(a): Teraz jest, ale tak ma być. W instrukcji też piszą, żeby lepiej używać pinMode (input_PULLUP) niż digitalWrite(HIGH).
pisałem ci ze tak się powiano to zrobić ale ja znalazłem iny sposób który działa tak samo nie ważne którego użyjesz
(06-07-2016, 02:01)rosak napisał(a): A co do mielenia, to myślę że zamiast else dać znów if {state=1} po Twojemu, będzie dobrze?
els zostaw tylko zrub tak
Kod:
if(....){
if(stan==0){//instrukcje
stan=1;}}
else{
if(stan==1){//instrukcje
stan=0;}}
i masz gotowe zabezpieczenie
[Obrazek: banerelektronika.jpg]



Jeśli pomogłem podziękuj punktem reputacji Wink
 
Odpowiedź
#15
Teraz wszystko jasne i kumam o co chodzi, dzięki Smile
I tak- miałem rezystor podciągający i wiem co to drgania.
Dzięki!
 
Odpowiedź
#16
No to wyjaśnia dlaczego pullup nie używasz.
[Obrazek: banerelektronika.jpg]



Jeśli pomogłem podziękuj punktem reputacji Wink
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości