PWM Arduino

Dobrý den, dneska
jsem vytvořil a naprogramoval na Arduinu program, který má pomocí PWM pomalu rozsvěcovat led diody (nápis) – viz. obr. imgur.com/6LbYMY – schéma… Jsem nováček, a tak se chci zeptat, protože já jsem již marný. Jinak ve schéma chybí připojený krystal, který jsem tam dneska dodal, a chci říct, že mám blbý poct, že jsem atmegu328p-pu odpálil, ale právě netuším jak… Ono to jelo, ale jako sekaně, prostě bylo to pwm, ale přeskakovalo to (jako když pustíte hru na starém počítači) . Zde je i kód. Díky moc předem. Kdyby jste kdokoliv měli nějaký návrh tak napiště možné řešení `int LED1 = 5; // LED 1 na 5 pin
int LED2 = 6; // LED 2 na 6 pin
int LED3 = 10; // LED 3 na 10 pin
int LED4 = 11; // LED 4 na 11 pin

void setup() {

}

void loop() {
//————————————————————LED 1—————————————————————-
// fade z min do max v kouskách po (x) bodech:
for (int fadeValue = 0 ; fadeValue <= 255; fadeValue += 1000){
// nastavuje hodnout (vzdálnost od 0 do 255):
analogWrite(LED1, fadeValue);
// čeká (x) mili sekund nž se setmí
delay(0.00001);
}

// fade z max do min v kouskách po (x) bodech:
for (int fadeValue = 255 ; fadeValue >= 0; fadeValue -= 1) {
// nastavuje hodnout (vzdálnost od 0 do 255):
analogWrite(LED1, fadeValue);
// čeká (x) mili sekund než se setmí
delay(4);
//————————————————————LED 2—————————————————————-
}
for (int fadeValue2 = 0 ; fadeValue2 <= 255; fadeValue2 += 1000){
analogWrite(LED2,fadeValue2);
delay(0.00001);
}

// fade z min do max v kouskách po (x) bodech:
for (int fadeValue2 = 255 ; fadeValue2 >= 0; fadeValue2 -= 1) {
// nastavuje hodnout (vzdálnost od 0 do 255):
analogWrite(LED2, fadeValue2);
// čeká (x) mili sekund než se setmí
delay(4);
}
//————————————————————LED 3—————————————————————-

for (int fadeValue3 = 0 ; fadeValue3 <= 255; fadeValue3 +=1000){
analogWrite(LED3,fadeValue3);
delay(0.00001);
}

// fade z min do max v kouskách po (x) bodech:
for (int fadeValue3 = 255 ; fadeValue3 >= 0; fadeValue3 -= 1) {
// nastavuje hodnout (vzdálnost od 0 do 255):
analogWrite(LED3, fadeValue3);
// čeká (x) mili sekund než se setmí
delay(4);
}
//————————————————————LED 4—————————————————————-

for (int fadeValue4 = 0 ; fadeValue4 <= 255; fadeValue4 += 1000){
analogWrite(LED4,fadeValue4);
delay(0.00001);
}
// fade z min do max v kouskách po (x) bodech:
for (int fadeValue4 = 255 ; fadeValue4 >= 0; fadeValue4 -= 1) {
// nastavuje hodnout (vzdálnost od 0 do 255):
analogWrite(LED4, fadeValue4);
// čeká (x) mili sekund než se setmí
delay(4);
}
//————————————————————LED 1—————————————————————-

// fade z min do max v kouskách po (x) bodech:
for (int fadeValue = 0 ; fadeValue <= 255; fadeValue += 5){
// nastavuje hodnout (vzdálnost od 0 do 255):
analogWrite(LED1, fadeValue);
// čeká (x) mili sekund nž se setmí
delay(20);
}

// fade z min do max v kouskách po (x) bodech:
for (int fadeValue = 255 ; fadeValue >= 0; fadeValue -= 300) {
// nastavuje hodnout (vzdálnost od 0 do 255):
analogWrite(LED1, fadeValue);
// čeká (x) mili sekund než se setmí
delay(20);
}
//————————————————————LED 2—————————————————————-

for (int fadeValue2 = 0 ; fadeValue2 <= 255; fadeValue2 += 5){
analogWrite(LED2,fadeValue2);
delay(20);

}
// fade z min do max v kouskách po (x) bodech:
for (int fadeValue2 = 255 ; fadeValue2 >= 0; fadeValue2 -= 300) {
// nastavuje hodnout (vzdálnost od 0 do 255):
analogWrite(LED2, fadeValue2);
// čeká (x) mili sekund než se setmí
delay(20);
}
//————————————————————LED 3—————————————————————-

for (int fadeValue3 = 0 ; fadeValue3 <= 255; fadeValue3 += 5){
analogWrite(LED3,fadeValue3);
delay(20);
}

// fade z min do max v kouskách po (x) bodech:
for (int fadeValue3 = 255 ; fadeValue3 >= 0; fadeValue3 -= 300){
// nastavuje hodnout (vzdálnost od 0 do 255):
analogWrite(LED3, fadeValue3);
// čeká (x) mili sekund než se setmí
delay(20);
}
//————————————————————LED 4—————————————————————-

for (int fadeValue4 = 0 ; fadeValue4 <= 255; fadeValue4 += 5){
analogWrite(LED4,fadeValue4);
delay(20);

}
// fade z min do max v kouskách po (x) bodech:
for (int fadeValue4 = 255 ; fadeValue4 >= 0; fadeValue4 -= 300) {
// nastavuje hodnout (vzdálnost od 0 do 255):
analogWrite(LED4, fadeValue4);
// čeká (x) mili sekund než se setmí
delay(20);

}
}`

v prvom rade nevidime schema zapojeni :smiley: link je nefunkcny.
v druhom: ak ti to predtym islo, a po prehodeni procaku inam ti to nejde, tak to skor vyzera na chybu DPS. A ak ti to ide “trhane” ako si napisal, a predtym to islo fajn, zase to len vyzera na chybu DPS.
šikla by sa ta schema, ale tak opytam sa:

  • napajas z baterie alebo zo zdroja ?
  • blokovacie kondiky na procaku mas ? (100nF co najblizsie pri napajacich pinoch MCU)
  • kondiky na krystale mas ?
  • krystal je pripajkovany jak sa patri ? (ziadne studaky ? blizko procesora ?)

PS: kod som ani nepozeral, pockam co odpovies :slight_smile:

Vzhledem k tomu, že na uinech jsou IO v SMD provedení bych řekl, že jsi napsal program, testnul ho na uinu a pak ho nasypal do procesoru a zapojil.

JENŽE :

Uino má procesor přepnutý na krystal a ten je 8 nebo 16 MHz podle provedení uina. Jenže procesor, který jsi dával na DPS je z výroby nastavený na IntRC 8 MHz s děličkou nastavenou na 8 => výsledné hodiny jsou 1 MHz, tedy min. 8x pomalejší. Připojení krystalu k procesoru bez přenastavení pojistek nic neřeší…

=======================================================================
!!! ČÍST DATASHEETY, ČÍST DATASHEETY, ČÍST DATASHEETY, ČÍST DATASHEETY, ČÍST DATASHEETY !!!

Chybí schéma, ale na fotce DPS u nožiček procesoru nevidím žádný blokovací kondenátor a vidím jenom 8 odporů na 59 LEDek. To si děláš legraci nebo je máš v SMD verzi na spodní straně DPS ? Jinak aby se Ti to rozběhlo na 8 MHz nepotřebuješ ani měnit pojistky, stačí v programu přepnout děličku systemových hodin z 8 na 1. V datasheetu se dočteš jak.

==========================================================================
Kód je jedna velká zoufalost, ale jestli je to Tvůj první program, tak budiž, nikdo učený z nebe nespadl.

Například tohle má jako znamenat co :

for (int fadeValue = 0 ; fadeValue <= 255; fadeValue += 1000)
for (int fadeValue = 255 ; fadeValue >= 0; fadeValue -= 300)

Kolikrát myslíš, že tyhle smyčky proběhnou ?