Poradna

Datum
Vložil
Titulek

PWM led diody

Dobrý den, dneska
jsem vytvořil a naprogramoval na Arduinu program, který má pomocí PWM pomalu rozsvěcovat led diody (nápis) – viz. obr. http://imgur.com/9CXlhpm – NÁPIS LOVE Jenže na nepájivém poli mi to fungovalo, a jakmile vyndám ATmegu a dám jim na plošný spoj, tak mi nic nefunguje. A přitom plošný spoj mám překontrolovaný a chyby v něm nemám. Spíš bych se chtěl zeptat, jestli nevidíte nějakou chybu v zapojení schéma procesoru. http://imgur.com/6LbYMY – schéma Jsem nováček, a tak se chci zeptat, protože já jsem již marný. Jinak kdosi mi říkal něco o tom, že by tam měl být zapojený krystal, ale to jsem moc nepchopil, tak bych byl rád, kdyby mi to někdo objasnil. Zde je i kód. Díky moc předem `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);

}
}`

Datum
Vložil
Titulek

Re: PWM led diody

Zdravím,
problém je v tom krystalu.
Ten u procesoru funguje jako "časovač". Arduino má na desce krystal 16Mhz. Pokud chceš program použít tak, že poté procesor vyndáš z Arduina a dáš ho na jiné DPS musíš i na tom DPS použít krystal o stejné frekvenci. Pokud ho tam nedáš, procesor čeká na takt hodin, ten ale logicky nemá odkud přijít a proto se program nehýbe. Pokud by jsi chtěl, dokreslím ti jak DPS upravit tak, aby to fungovalo ;)

Datum
Vložil
Titulek

Re: Re: PWM led diody

To by jste byl zlatý, kdyby jste mi to dokreslil!!! Já už to skoro vzdal, protože jsem byl v domění, že processor má tenhle článek v sobě. Díky moc :)

Datum
Vložil
Titulek

Re: Re: Re: PWM led diody

Procesor v sobě krystal má, ale ten je "pomalý" a nepřesný. Proto se používá externí :)
Krystal můžete použít jaký chcete, hlavní je že MUSÍ mít kmitočet 16MHz (když přijdete do nějakého obchodu se součástkami a řeknete že chcete 16MHz kdystal k procesoru tak budou vědět ;)). Pak už stačí jen připojit 22pF kondenzátory a je to ;)
Zapojení:https://onedrive.live.com/redir?resid=FAF4E984A335CDFF!5662&authkey=!AE5iHNu39sjBTsk&v=3&ithint=photo%2cPNG

Datum
Vložil
Titulek

Re: Re: Re: Re: PWM led diody

supeer :) Díky moc :)

Datum
Vložil
Titulek

Re: Re: Re: Re: PWM led diody

Tak krystal i kondíky už tam mám, ale furt mi to moc nechce jet :/ Jako má to tendenci fungovat, jakože to funguje jako pwm, ale přijde mi to jako když pustíte nějakou pořádnou hru na starém počítači. Prostě se to seká.... Nevíte, čím by to mohlo být způsobeno?

Datum
Vložil
Titulek

Re: Re: Re: Re: PWM led diody

A nejspíš jsem atmegu odpálil :/ Porože ani v arduinu nejeví žáné známky života, a nejde ni nic nahrát..

Datum
Vložil
Titulek

Zpoždění relé millis

Ahoj, snažím se nastavit Arduino UNO tak, aby po stisku tlačítka se sepnulo relé do stavu ON a po uběhnutí 5min zase vypnulo. Je možné pro tuto funkci použít millis? Nemůžu použít delay, potřebuji ještě číst ze senzorů.
Nikde se o tom nic nepíše, tak nevím jsetli je to možné.
Děkuji za radu, případně za návrhy.

Datum
Vložil
Titulek

Re: Zpoždění relé millis

Ano, je to možné. Nemohu však potvrdit, že se o tom nikde nepíše, ba právě naopak ;-)

Datum
Vložil
Titulek

Re: Zpoždění relé millis

Ahoj, no ale to tlačítko musí být zmačknuto dokud arduino nenaběhne (tedy cca5sec.).

<< 1 | 2 | 3 | 4 | 5 >>

Vyhledávání

arduino8.cz © 2015 Všechna práva vyhrazena.