Skocz do zawartości

Problem z kodem stopniowe zaswiecanie led.


Pomocna odpowiedź

Napisano

Witam, nie mogę odpalić pca9685, gdzie popełniam błąd? Kod się wgrywa, połączenia wyglądają na ok a dioda po podłączeniu do pwm,gnd nie pali się

#include <Wire.h>
#include <Adafruit_PWMServoDriver.h>

Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver();

void setup()
{
Serial.begin(9600);

pwm.begin();
pwm.setPWMFreq(1600);   

pwm.setPWM(0,4200,4200);
}
void loop()
{
 }

Ta biblioteka jest tak głupio napisana, że nie daje żadnej diagnostyki. Nawet jej begin nie oddaje żadnego kodu błędu i nie wiadomo czy w ogóle powiodła się pierwsza komunikacja i inicjalizacja scalaka. Spróbuj wgrać jakiś program skanera I2C i zobacz, czy wykryje tego 9685. Jeżeli nie, to musisz szukać w kablach: masa, zasilanie, linie I2C, oporniki podciągające, pin OE do masy, ustawienie adresów A0..A5 itp.

https://playground.arduino.cc/Main/I2cScanner

Może pokaż schemat?

Problem leżał najprawdopodobniej w uszkodzonym pca na innym udało mi sie uruchomić program. Ogólnie pracuję nad sterownikiem schodowym i mam jeszcze problem z kodem. Opracowałem już stopniowe gaszenie schodów z rozjaśnianiem też nie będzie problemu. Problem tkwi w tym, ze chciałbym zaswiecanie jak i gaszenie inicjować poprzez 2 przyciski. Jak ująć to w kodzie? Jaką funkcje zastosować? Próbowałem if else while efekt cały czas ten sam. Inicjowanie gaszenia działa prawidłowo a rozświetlania wykonuje się cały czas nawet gdy przycisk nr 2 jest wyłączony.

#include <Wire.h>
#include <Adafruit_PWMServoDriver.h>
int pirPin = 2; //włacznik
int parter; //włączanie ledów od parteru
Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver();
const int wlgora = 7;
int gora;


void setup() {
pinMode(2, INPUT_PULLUP);
pinMode(10,OUTPUT);
digitalWrite(10, LOW);
Serial.begin(9600);
pwm.begin();
delay(50);
pwm.setPWMFreq(500); // This is the maximum PWM frequency

pinMode(7, INPUT_PULLUP);
}


void loop()
{  
parter=digitalRead(pirPin); //read state of the PIR
gora = digitalRead(wlgora);


if (parter == LOW)
{
 pwm.setPWM(0,3,4);
 pwm.setPWM(1,3,4);
 pwm.setPWM(2,3,4);
 pwm.setPWM(3,3,4);
 pwm.setPWM(4,3,4);
 pwm.setPWM(5,3,4);
Serial.println(" parter właczony");
for (int j=0; j<6; j++ )
{
for (int i=0; i<4090; i+=2)
{


pwm.setPWM(j,1, i);
}
if(j==5){delay (5000);}
}
}



if(gora = LOW);//           przykładowe zaswiecanie led, tu tkwi mój problem. 
Serial.println(" gora właczony");
{digitalWrite(10,HIGH);
delay (2000);
digitalWrite(10,LOW);
delay(2000);}
}
  • 2 tygodnie później...

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...