LusoRobótica - Robótica em Português
Sistemas específicos => Arduino / AVR => Tópico iniciado por: ptrobotics em 06 de Janeiro de 2011, 16:59
-
Olá pessoal,
Não consigo entender isto:
int leddelay(65);
porque é que não é:
int ledelay = 65;
É tão óbvio que não consigo entender dado que ledelay não é uma função da linguagem... ou é?
-
Isso compila sem erros?
-
Sem qualquer erro!
Retirei de um livro, é um programa relativamente simple para fazer uns led's deslizantes.
Código completo:
// Project 5 - LED Chase Effect
byte ledPin[] = {4, 5, 6, 7, 8, 9, 10, 11, 12, 13}; // Create array for LED pins
int ledDelay(65); // delay between changes
int direction = 1;
int currentLED = 0;
unsigned long changeTime;
void setup() {
for (int x=0; x<10; x++) { // set all pins to output
pinMode(ledPin(x), OUTPUT); }
changeTime = millis();
}
void loop() {
if ((millis() - changeTime) > ledDelay) { // if it has been ledDelay ms since
last change
changeLED();
changeTime = millis();
}
void changeLED() {
for (int x=0; x<10; x++) { // turn off all LED's
digitalWrite(ledPin(X), LOW);
}
digitalWrite(ledPin[currentLED], HIGH); // turn on the current LED
currentLED += direction; // increment by the direction value
// change direction if we reach the end
if (currentLED == 9) {direction = -1;}
if (currentLED == 0) {direction = 1;}
}
-
Olá pessoal,
Não consigo entender isto:
int leddelay(65);
porque é que não é:
int ledelay = 65;
É tão óbvio que não consigo entender dado que ledelay não é uma função da linguagem... ou é?
Se o int for uma classe pode ter um constructor e então permite que isso seja feito de outra maneira, mas para isso tinhamos que estar a falar de C++. Isso é Arduino?! Se for é provavel que isto aconteça, o melhor é mesmo perguntar no forum do arduino, de certeza que sabem!
-
Retirei do livro beginning Arduino. Tenho andado às voltas para conseguir entender esta linha!
-
Cheira-me que isso dê um warning..
-
Cheira-me que isso dê um warning..
O arduino é feito em c++/c por isso se o int for uma classe é super normal que se faça isso e não tem nada que dar warning. Agora não sei como isso está feiot, isto são só suposições.
-
Mas o arduino por alguma razão ainda desconhecida tem os warnings do compilador desligados, e o int faz parte das coisinhas base do compilador, por outro lado, nada me espanta...
No AvrStudio meter o int leddelay(65); dá este erro:
../USART.c:13: error: expected declaration specifiers or '...' before numeric constant
-
No AvrStudio meter o int leddelay(65); dá este erro:
../USART.c:13: error: expected declaration specifiers or '...' before numeric constant
Provavelmente, porque estás a compilar em C e não C++ (muda a extensão do ficheiro para .cpp).
-
Sim, o ficheiro é .c .