Pages: [1]   Go Down
Author Topic: Declaracion de varios pines como salida  (Read 898 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 8
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Estoy liado con un codigo para hacer unos efectos de cara al carnaval y me esta volviendo loco el temita con una secuencia de leds.
El proyecto final es un cartel con dos palabras una sobre otra y en cada letra un grupo de leds
PALABRA1
PALABRA2
Tengo hechos varios efectos ya, pero ahora estoy con que alternen el encendido pero no consigo hacerlo bien, el codigo que tengo es este:

void setup(){
 int palabra1[]={0,1,2,3,4,5};
 int palabra2[]={6,7,8,9,10,11,12};
 pinMode(palabra1, OUTPUT);
 pinMode (palabra2, OUTPUT);
}
void loop(){
  alternar();
}
void alternar(){
  digitalWrite(palabra1, HIGH);
  delay(500);
  digitalWrite(palabra1,LOW);
  digitalWrite(palabra2,HIGH);
  delay(500);
}


Y al verificar me da el error

sketch_jan23a.ino: In function 'void setup()':
sketch_jan23a:4: error: invalid conversion from 'int*' to 'uint8_t'
sketch_jan23a:4: error: initializing argument 1 of 'void pinMode(uint8_t, uint8_t)'
sketch_jan23a:5: error: invalid conversion from 'int*' to 'uint8_t'
sketch_jan23a:5: error: initializing argument 1 of 'void pinMode(uint8_t, uint8_t)'
sketch_jan23a.ino: In function 'void alternar()':
sketch_jan23a:11: error: 'palabra1' was not declared in this scope
sketch_jan23a:14: error: 'palabra2' was not declared in this scope


¿Alguien me dice porque es y como tendria que declarar un array para poder usarlo de esa forma?

Gracias
Logged

Spain
Offline Offline
God Member
*****
Karma: 25
Posts: 958
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

¿Estas diciendole al arduino que el pin lo quieres en modo array?  smiley-eek-blue

¿No has mirado lo basico de arduino, el pinmode?

Solo le puedes dar un numero al pin, no tropecientos, por eso te da error.

Mientras le pegas un repaso a los arrays en arduino y como se usan te dejo esta pagina que hace lo que tu quieres, pero no se te olvide de leerte lo basico de arduino porque esto es darte los peces y te hara falta aprender a pescar...

http://opensourcehardwarejunkies.com/tutorial-09-how-to-use-arrays-with-arduino/
Logged

CUIDADO !! MIS POST NO SON APTOS PARA MENORES. SI ERES MENOR DE 14 AÑOS DEBES DE LEERLOS ACOMPAÑADO DE UN ADULTO

Offline Offline
God Member
*****
Karma: 7
Posts: 635
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Creo que no quiere asignar un array a un pin sino todos los números del array configurarlos como pines de salida. mmsouto para eso tienes que recorrer todas las posiciones del array con una instrucción for. Como te ha dicho Heke repasa los arrays.
Logged


Offline Offline
Newbie
*
Karma: 0
Posts: 8
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Igual me explique mal, lo que queria era simplificar el codigo para no tener que hace bucles for en cada secuencia, de forma que la variable palabra1 estuviera formada por los pimeros 5 pines, y asi al activar la salida con el write encender todos los led a la par.

Con bucles for, lo tengo hecho y funcionando ya segun el codigo siguiente:

Code:
[size=8pt]
void setup() {
 for(int i=0;i<=13;i++){ //SE INICIALIZAN TODOS LOS PINES COMO SALIDA
  pinMode(i, OUTPUT);
 }
}
 /*  APAGAR:     APAGA TODO                  SECUENCIA1: ENCIENDE TODO               
     SECUENCIA2: ENCIENDE UNO APAGA OTRO     SECUENCIA3: ENCENDIDO ACUMULADO
     SECUENCIA4: COCHE FANTASTICO            PALABRA1:   ENCIENDE PRIMERA PALABRA
                                             PALABRA2:   ENCIENDE SEGUNDA PALABRA
*/
void loop() {
    apagar();secuencia1();delay(1000);
    apagar();palabra1();palabra2();palabra1();palabra2();palabra1();palabra2();
    apagar();secuencia2();delay(200);secuencia2();delay(200);secuencia2;
    apagar();secuencia3();delay(300);apagar();secuencia3();delay(300);apagar();secuencia3();delay(300);
    apagar();secuencia4();secuencia4();secuencia4();delay(300);
}
void apagar(){
 for (int i=0; i<=13; i++){
  digitalWrite(i-1,LOW);
 }
}
void secuencia1(){
 for (int i=0; i<=13; i++){
  digitalWrite(i, HIGH);
 }
}
void secuencia2(){
 for (int i=0; i<=13; i++){
  digitalWrite(i, HIGH);
  digitalWrite(i-1,LOW);
  delay(200);
 }
}
void secuencia3(){
 for (int i=0; i<=13; i++){
  digitalWrite(i,HIGH);
  delay(50);
 }
}
void secuencia4(){
 for (int i=0; i<=13; i++){
  digitalWrite(i,HIGH);
  delay(30);
 }
 for (int i=13; i<=0; i++){
  digitalWrite(i,LOW);
  delay(30);
 }
}
void palabra1(){
 for (int i=0; i<=5; i++){
  digitalWrite(i,HIGH);
 }
 delay(300);
  for (int i=0; i<=5; i++){
  digitalWrite(i,LOW);
 }
}
void palabra2(){
 for (int i=6; i<=13; i++){
  digitalWrite(i,HIGH);
 }
 delay(300);
  for (int i=6; i<=13; i++){
  digitalWrite(i,LOW);
 }
}
[/size]
Logged

Spain
Offline Offline
God Member
*****
Karma: 25
Posts: 958
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bufff....

Eso es una programacion muy "guarrilla"  smiley-sad-blue

Si te llega a ver mi profesora de Pascal... "SUSPENDIDO DE POR VIDA"

Si fuera Sheldon Cooper quien hubiera visto ese codigo diria:
http://youtu.be/93Q3uUQQhSs

Mirate el enlace que te he puesto que ahi lo tienes solucionado, pero miralo... que me da a mi que has hecho caso omiso smiley-sad
« Last Edit: January 23, 2013, 01:15:55 pm by Heke » Logged

CUIDADO !! MIS POST NO SON APTOS PARA MENORES. SI ERES MENOR DE 14 AÑOS DEBES DE LEERLOS ACOMPAÑADO DE UN ADULTO

Madrid
Offline Offline
Sr. Member
****
Karma: 5
Posts: 481
Life isn't about finding yourself, life is about creating yourself!!
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Bufff....

Eso es una programacion muy "guarrilla"  smiley-sad-blue

Si te llega a ver mi profesora de Pascal... "SUSPENDIDO DE POR VIDA"

lol smiley

quien sabe a lo mejor son nuevas reglas de "concurrency, portability, reusability, and performance" del MISRA
Logged

Engineering is the art of
making what you want from
things you can get.

     

[SOLUCIONADO]

Pages: [1]   Go Up
Jump to: