Show Posts
|
|
Pages: 1 [2] 3
|
|
16
|
Using Arduino / Storage / Save Servo Position on EEPROM
|
on: March 22, 2013, 11:08:20 pm
|
|
Hi, i made a program to move servos whit android, it works well, but now i want to save sequences of movements, for example, move servo 1 to 180°, move servo 2 to 100°, etc. only using the android phone, i have a idea but i dont know if it is good, this is the code to do the movements in manual form: [c
|
|
|
|
|
17
|
International / Software / Re: Almacenar posicion de servos en memoria EEPROM
|
on: March 09, 2013, 03:54:50 pm
|
|
ya vi mejor los ejemplos, entonces según yo seria algo así.
Escribir EEPROM.write( 1, posicion del servo); Leer pos1 = EEPROM.read(1); servo1.write(pos1);
lo que no me queda muy claro es como definir que valor va a guardar, por lo que me dijiste en el comentario anterior supongo que poner pos1 no es correcto.
|
|
|
|
|
18
|
International / Software / Re: Almacenar posicion de servos en memoria EEPROM
|
on: March 09, 2013, 02:19:11 pm
|
|
entonces en direccion seria asignarle una a cada servo y el valor seria por ejemplo pos1= 5? podrias decirme si esto estaria bien: if data "B" EEPROM.write(1, pos1=20); if data "C" EEPROM.read (1) obviamente no esta bien el codigo, pero segun yo seria mas o menos lo que se necesita, y gracias por la ayuda.
|
|
|
|
|
19
|
International / Software / Re: Almacenar posicion de servos en memoria EEPROM
|
on: March 09, 2013, 11:05:02 am
|
Hola Eduort
Mira los tutoriales de esta web que explican el uso de la eprom del arduino muy bien.
No creo que tengas problemas una vez los leas.
Un saludo.
Gracias, pero ya los lei y lo que no entiendo es como guardar varias posiciones de servos, como dije lo unico que se me ocurrio es dejar posiciones en blanco y luego sobre escribirlas pero no se si sea posible.
|
|
|
|
|
20
|
International / Software / Almacenar posicion de servos en memoria EEPROM
|
on: March 08, 2013, 10:19:03 pm
|
|
Hola, estoy trabajando con servos y hasta ahora puede hacer que se muevan con el programa que dejo a continuacion, sin embargo ahora lo que quiero hacer es poder guardar la secuencia de los servos en la memoria EEPROM y luego ejecutarla, lo que se me ocurre es copiar la posicion del servo en otra posicion, y esa posicion este dentro de un if, y al recibir por ejemplo una "c" mover todos los servos a las posiciones que esten dentro, pero no pude encontrar mucha informacion al respecto, y no se como hacerlo, agradeceria mucho si me pueden dar alguna ayuda, como dije a contunacion dejo lo que llevo de programa, y gracias de antemano.
|
|
|
|
|
21
|
International / Proyectos / Servos y Android
|
on: March 05, 2013, 01:32:02 am
|
|
Estoy haciendo un proyecto para controlar servos usando un celular android, hasta ahora lo que pude lograr fue que al enviar una letra mueva cierto servo, sin embargo quiero logar el poder programar secuencias para los servos desde el celular, lo primero que se me ocurrio fue programar todas las posiciones posibles de los servos y hacer todo lo demas desde el celular, pero al intentar enviar por ejemplo A1,A2...A180 el arduino solo detecta el primer caracter y me toma todo como "A", agradeceria mucho si me pueden sugerir una forma de poder enviar mas datos por serial u otra forma de escbirir nueva programacion en el arudino pero desde el celular, lei sobre la EEPROM pero creo que seria complicado guardar los datos desde la aplicacion, es todo y gracias de antemano.
|
|
|
|
|
22
|
International / Software / Programar Loop
|
on: February 09, 2013, 01:26:39 pm
|
Hola, estoy haciendo un proyecto que es un brazo robot, al cual le quiero poner secuencias, hasta ahora lo que logre fue programar la secuencia y que al presionar el boton la haga una ves, pero el problema es que necesito que al oprimir el boton iniciar la secuencia y se siga repitiendo hasta que se oprima otro boton para que se detenga, sin embargo no he encontrado la forma de hacer esto, este es el codigo que tengo if (Serial.available() > 0) { data = Serial.read(); } if ((data == 'A') || (data == 'a')) { pos1 = 135; servo1.write(pos1); delay(2500); pos2 = 90; servo2.write(pos2); delay(2500); pos3 = 90; servo3.write(pos3); delay(2500); pos4 = 165; servo4.write(pos4); delay(2500); pos1 = 90; servo1.write(pos1); delay(2500); pos2 = 75; servo2.write(pos2); delay(2500); pos4 = 120; servo4.write(pos4); delay(2500); } Agradeceria mucho si me pueden pasar un tutorial o decir como puedo hacer lo que busco, es todo y gracias de antemano.
|
|
|
|
|
23
|
International / Hardware / Vibracion de Servomotores
|
on: January 17, 2013, 09:10:42 pm
|
|
Hola, tengo un problema, estoy trabajando con servos tower pro sg995, los alimento con 9v con una fuente, hasta ahi no tengo problemas, pero cuando los conecto al pin de señal del arduino empiezan a vibrar y no se a que se deba, agradeceria mucho si me pueden decir alguna teoria de porque esta pasando este problema, saludos.
|
|
|
|
|
24
|
International / Hardware / Duda con servos
|
on: January 10, 2013, 07:48:30 pm
|
|
Hola, estoy haciendo un brazo robot con servos, pero quiero que cada articulacion lleve 2, intente ponerle a 2 servos la misma señal, los 2 se movian a la ves pero uno vibraba, asi que me gustaria saber si hay otra manera de hacer esto, o si la vibracion del servo fue por otra cosa y no por poner la misma señal, es todo y gracias de antemano.
|
|
|
|
|
25
|
Using Arduino / LEDs and Multiplexing / Led Cube, How to Program
|
on: November 11, 2012, 01:01:30 pm
|
Hi, i try to do a Led cube whit custom routines, and i want to start each routine whit a button, i do the cube whit a tutorial, and i see this example code, but i dont know how control each rutine whit a button, how i could do that? thanks in advance. /* ledcube.pde - Example sketch for controlling an LED cube. Created by Gamaiel Zavala (gzip), 2009-2012 MIT License. See accompanying LICENSE file for terms. */
#include <LedCube.h>
#define SIZE 3 #define COLS (SIZE*SIZE)
byte levelPins[SIZE] = {11,12,13}; byte colPins[COLS] = {2,3,4,5,6,7,8,9,10};
LedCube cube(SIZE, levelPins, colPins);
void setup () { }
void loop () { delay(10); // light each light one at a time for(byte level=0; level<cube.getLevels(); level++) { for(byte col=0; col<cube.getCols(); col++) { cube.lightPulse(level, col, 100); } } // light one level at a time, increasing speed each time for(byte d=25; d>2; d-=2) { for(byte l=1; l <= cube.getLevels(); l++) { cube.lightLevel(l, d); } } // light each row on each level for(byte level=1; level<=cube.getLevels(); level++) { for(byte row=1; row<=cube.getLevels()*2; row++) { cube.lightRow(row, level); } } // light each plane for(byte i=3; i; i--) { for(byte row=1; row<=cube.getLevels()*2; row++) { cube.lightPlane(row, 10*i); } } // single random light at a time cube.randomLight(random(25,100),100); // random column drop for(byte x=0; x<=15; x++) { cube.lightDrop(random(0,cube.getCols()), random(50,150)); } // circle around cube at a random level for(byte x=0; x<=5; x++) { cube.lightPerimeter(random(0,cube.getLevels()), random(1,5), random(25,100)); } // light each face byte planes[] = {cube.getLevels()+1,cube.getLevels(),cube.getLevels()*2,1}; for(byte i=5; i; i--) { for(byte p=0; p<sizeof(planes); p++) { cube.lightPlane(planes[p], 5*i); } } // random columns cube.randomColumn(25); // turn off a single column randomly cube.enableBuffer(); for(byte c=0; c<30; c++) { cube.fillBuffer(); cube.invertBuffer(); cube.randomColumn(); cube.drawBuffer(7); } cube.enableBuffer(false); // cols in and out for(byte c=1, d=0; c<=10; c++) { if(c%2 == 0) { for(d=0; d<20; d++) { cube.lightColumn(2,1); cube.lightColumn(4,1); cube.lightColumn(6,1); cube.lightColumn(8,1); } } else if(c%4 == 1) { for(d=0; d<30; d++) { cube.lightColumn(1,1); cube.lightColumn(3,1); cube.lightColumn(7,1); cube.lightColumn(9,1); } } else { for(d=0; d<70; d++) { cube.lightColumn(5,1); } } } // diamond and box byte diamond[] = {0,4, 1,1, 1,3, 1,4, 1,5, 1,7, 2,4}; byte box[] = { 2,0, 2,1, 2,2, 2,3, 2,5, 2,6, 2,7, 2,8, 1,0, 1,2, 1,6, 1,8, 0,0, 0,1, 0,2, 0,3, 0,5, 0,6, 0,7, 0,8 }; cube.lightSequence(box, sizeof(box), 200); cube.lightSequence(diamond, sizeof(diamond), 400); // helicopter effect byte topSeq[8] = {0,3,6,7,8,5,2,1}; byte botSeq[8] = {8,5,2,1,0,3,6,7}; for(byte loops = 0, delay = 50; loops<=8; loops++) { for(byte s=0; s<8; s++) { byte seq[] = {2,topSeq[s], 1,4, 0,botSeq[s]}; cube.lightSequence(seq, sizeof(seq), delay); } if(loops < 5) delay-=10; else delay += 10; } // turn off one light at a time cube.enableBuffer(); cube.fillBuffer(); cube.drawBuffer(25); for(byte w=0, l, c, max = cube.getNumLights(); w<max; ) { // lower bound is inclusive, upper is exclusive l = random(0, cube.getLevels()); c = random(0, cube.getCols()); if(cube.getBufferAt(l,c) == HIGH) { cube.lightOff(l,c); cube.drawBuffer(5); w++; } } cube.enableBuffer(false); }
|
|
|
|
|
27
|
International / Software / Dudas, Carro Con Cubo de Leds.
|
on: November 06, 2012, 09:59:04 pm
|
Hola, quiero realizar el siguiente proyecto, pero no se si sea posible, quiero hacer un pequeño carro que funcione con 2 servos, pero que el carro lleve arriba un cubo de LEDs de 2x2x2 (8 Leds), y que al presionar un boton el carro se mueva, pero que mientras se este ejecutando eso, que al presionar otro boton empieze una secuencia en el cubo, es posible hacer las 2 cosas a la ves? Y otra duda es en cuanto a las secuencias del cubo, pienso adaptar este codigo que es para cubos de 3x3x3: int Columnas[] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
int Filas[] = {12, 11, 10}; int RandFila; //Variable para fila aleatoria int RandColumna; //Variable para columna aleatoria
void setup() { int contador;
for (int contador = 0; contador < 10; contador++){ pinMode(Columnas[contador], OUTPUT); }
for (int contador = 0; contador < 4; contador++){ pinMode(Filas[contador], OUTPUT); } }
void loop() { RandLed(); }
void RandLed() { RandFila = random(0,3); RandColumna = random(0,9);
digitalWrite(Filas[RandFila], HIGH); digitalWrite(Columnas[RandColumna], HIGH);
delay(75);
digitalWrite(Filas[RandFila], LOW); digitalWrite(Columnas[RandColumna], LOW);
delay(50); }
Pero no estoy muy seguro de que parte del codigo es lo que tendria que poner en el boton para poder controlar el inicio de la secuencia, segun yo es a partir de RandLed(); pero no estoy muy seguro, y tampoco se si agregar mas secuencias para controlar con cada boton pueda de alguna manera afectar el fucnionamiento, son muchas dudas pero agradeceria mucho si me pueden ayudar, saludos.
|
|
|
|
|
29
|
International / Software / Re: Mover Servo y Encender led a la ves
|
on: October 24, 2012, 02:13:31 pm
|
Si no te quieres poner a controlar los registros del Timer y las señales que hay que enviar al servo, otra posibilidad es que en vez que esté parpadeando todo el rato el led, haz que se encienda cuando empiece a moverse el servo y cuando se pare se apague el led. Mola más que parpadee pero tiene mucho trabajo.
Como podria hacer eso? hasta ahora solo logre que cuando envio la señal de movimiento se prenda el LED, pero el problema es que se paga hasta que vuelvo a mandar la señal de que se mueva el servo, entonces podria quedarse encendido aunque el servo ya no se mueva.
|
|
|
|
|
30
|
International / Software / Programar Secuencia
|
on: October 23, 2012, 01:57:28 pm
|
|
Tengo una duda que talves sea sencilla pero no he encontrado informacion de como hacerlo, como podria hacer para que al recibir una señal el arduino ejecute comandos uno tras otro? por ejemplo al oprimir un boton que prenda un led en el pin 12 y cuando este termine uno en el pin 13? es todo y gracias de antemano.
|
|
|
|
|