2016-03-31 30 views
1

Ben prototipleme yaparken Arduino Mega'm için bir eskiz yazdım. Daha sonra, bir atmega328 yongasına olduğu gibi parladı. Çizimin her yerinde garip sonuçlar var. Bunu düzeltmek için modülü yeni bir IDE penceresine kopyaladım ve analogWrite fonksiyonları ile balıklı bir şey farkettim. Diğer tüm değişkenler götürmek için, ben biraz değiştirilmiş FADE örnek krokiarduino atmega328 analog olarak sıfırlandıWrite

int led = 6;  
int brightness = 0; 
int fadeAmount = 5; 
void setup() { 
    Serial.begin(9600); 
    pinMode(led, OUTPUT); 
} 
void loop() { 
    Serial.println(brightness); 
    analogWrite(led, brightness); 
    brightness = brightness + fadeAmount; 
    if (brightness == 0 || brightness == 255) { 
    fadeAmount = -fadeAmount ; 
    } 
    delay(1000); 
} 

Hiçbir hataları gayet de yükler ve bunu pin bir yol açtı ve direnç bağlı olan eşkalini yüklendi. çip kodunu şekilde çalışmaya başladığında, tüm ı yanıp sönen led olsun ve bu

.5 
.0 
.5 
.0 
.5 
.0 
.5 
.0 
.5 
.0 
.5 
.0 
.5 
.10 

gibi seri veri Nesi olabilir ???

cevap

1

Garip şeyler oluyor. Ben kopyalayıp yapıştırmadan sonra programı koştu ve beklenen sonuç var: Eğer yanınızda beklenmedik sonuçlar üretir tam kodunu yapıştırılan emin

0 
5 
10 
15 
20 
25 
30 
35 
40 
45 
50 
55 
60 
65 
70 
75 
80 
85 
90 
95 
100 
105 
110 
115 
120 
125 
130 
135 
140 
145 
150 
155 
160 
165 
170 
175 
180 
185 
190 
195 
200 
205 
210 
215 
220 
225 
230 
235 
240 
245 
250 
255 
250 
245 
240 
235 
230 
225 
220 

musunuz? Sayıların önündeki noktalar çok garip şeylerden sadece bir tanesi. Elbette alternatif değerler bir diğeridir. Aniden sero ve beşliden sonra ortaya çıkan .10 gibi. Kısacası, balıkçılığın benzetmeyle alakası yok gibi görünüyor.

Donanım sorunu olmadıkça. Hangi değer direnci? Direnç ve LED seri olarak mı? LED, 0,5 Hz'lik bir frekans ve 0,5'lik bir çalışma döngüsüyle yanıp sönüyor mu? ya da değil? Durumunuz 256 yerine 255 ile işaretli ise

BTW, RBerteig O'nun versiyonu gerçekten iyidir, ama bu sorun olsaydı bu bile ... stok kroki olan farklı bir davranış

+0

Bir direnç meselesiydi ... çok küçüktü ... daha büyük direnç ... ve ". " Sadece kullandığım seri monitör ... –

+0

'u temizlemiş olmalı, programın şimdi çalıştığına sevindim. Yine de, direncin seri monitörde görüntülenen sonuçları nasıl etkileyeceğini göremiyorum. Neler olduğunu ve niçin olduğunu tam olarak kavramak için biraz daha araştırmanız gerekebilir. –

0

Bariz sorun bu hat ile geçerli: her tekrarında

if (brightness == 0 || brightness == 255) { 

ekleyerek (ya da çıkarılarak) tarafından brightness modifiye edildiği için 5 ve 256, ne son nokta gösterdiğini test edecek 5 ile bölünebilir değildir. == testini eşitsizliğe değiştirin.

if (brightness <= 0 || brightness >= 255) { 
+0

görecekti doğru olacaktır Eğer analogWrite'ım varsa, başarısız olur ... Ben de denedim ve hala aynı şey –