2013-08-28 4 views
0

Я пишу программу, которая регистрирует и печатает цифровые и аналоговые входы. К сожалению, у arduino заканчивается память. Чтобы уменьшить размер программы, я пытаюсь распечатать входы с помощью цикла for. Я пытался сделать:Как распечатать набор переменных в цикле for

for(int analog = analog0; analog <= analog9; analog ++){ 
    Serial.println(analog); 
} 

Когда я бегу Arduino, это не всегда печатать все входные данные, иногда не печатает ни один, ни один или два, примерно до 16 входов (У меня всего 10 подключений). Каждый раз, когда этот цикл работает, он печатает другое количество входов. Какие-либо предложения?

ответ

2

Я ничего не знаю об ардуино, но если analog0 является показанием аналогового значения, то, конечно, этот код не будет работать. Значение analog будет случайным значением АЦП! Возможно, вам нужно сделать

for(int i = 0; i<= 9; i++){ 
    Serial.println(analogRead(i)); 
} 
+0

К сожалению, это не будет точно работать. Я не могу читать аналоговые значения, подобные этому, я должен их прочитать отдельно и сделать некоторую математику, чтобы получить значение, которое представляет вход (в моем случае давление). Если я попробую что-то вроде: 'for (int i = 0; i <= 9; i ++) { Serial.println (аналоговый (i)); } ' Arduino считает, что аналогом является функция. – Xjkh3vk

+0

Его код читает их отдельно. Посмотрите, что он написал: analogRead (i). Посмотрите, что вы написали: analog (i). – user2461391

+0

Вы должны оставить остальную часть своего кода. Как рассчитываются или объявляются «analog0». Если вы вычисляете 'analog0 = analogRead (0) * 3.3/4096' или что-то в этом роде, вам нужно изменить свой код на' analog [0] = analogRead (0) * 3.3/4096', а затем цикл над 'analog [i]'. –

1

Прежде всего, ваш цикл for неверно закодирован.

Кроме того, попробуйте хранения аналоговых Интс вне контура():

int analog[10]; 

    // etc. 

    loop() { 
     int x; 

     analog[0] = analogRead(analogPin0); 
     analog[1] = analogRead(analogPin1); 
     // etc. do calcs 
     // for a beginning programmer, this for loop is OK 
     for (idx = 0; idx < 10; idx++) { 
      serial.println(analog[idx]); 
     } 

} 
Смежные вопросы