jueves, 11 de junio de 2015

PRESUPUESTO DEL ROBOT

Como es un ejercicio que tenemos que hacer, tenemos que hacer un presupuesto estimado de lo que ha costado este proyecto. Para este presupuesto hemos puesto:
- Los productos y su cantidad
- De donde han sido comprados
- El precio de la unidad, con y sin IVA
- Por último, el precio final




ROBOCAMPEONES

Después de realizar el proyecto final, fuimos de viaje a Majadahonda a competir contra otros institutos de España para ver qué robot resolvía, en este caso, antes el laberinto para ganar. Fue una experiencia bastante buena, aunque nuestro robot no funcionó y nos eliminaron en la primera ronda. Hicimos vídeos, como estos:
























Paso 4: Hacer pruebas

Para poder presentar en Majadahonda (Robocampeones) el robot, primero tuvimos que probarlo.
Aquí dejo las pruebas que hicimos (aunque no pude hacer vídeos, porque no tenía suficiente almacenamiento el móvil):





Así era el laberinto que tenía que resolver el robot


Paso 3: Cambiar el programa en la placa

Por último, tuvimos que cambiar el programa de la placa Arduino, ya que el robot que estábamos utilizando era el robot que habíamos expuesto en la Feria Arduino, por lo que el robot estaba programado para seguir la luz con las LDR.
Cogimos el programa del aula virtual del Papas, ya que nuestro profesor nos puso en esta página un prototipo de este programa.
Este programa tenía algunos fallos, por lo que tuvimos que solucionarlos entre el profesor y nosotros.
Después de solucionar los fallos, lo único que quedaba era hacer pruebas del robot.

Paso 2: Poner la placa con los sensores

Después, tuvimos que hacerle dos agujeros a la tabla de PVC espumado, y ponerle dos tornillos (con arandelas y con tuercas, para que no se caigan) y pusimos la placa con los sensores que captan la línea negra, a ras del suelo, sin que la placa llegase a tocarlo. Tuvimos que ponerla tan cerca del suelo ya que si no los sensores no captaban la línea negra.

Paso 1: Quitar las LDR

En primer lugar tenemos que quitar las LDR, ya que para este proyecto no las necesitaremos, porque este proyecto no va a ir destinado a seguir una luz, si no que a seguir una línea (en este caso de color negra) y a resolver un laberinto.

ROBOT QUE RESUELVE EL LABERINTO

Para este proyecto, usaremos el mismo robot que en el anterior, haciéndole unas pequeñas modificaciones.


FERIA ARDUINO

Al final, presentamos este proyecto en la feria de Arduino, dónde había muchos proyectos que fueron presentados por los institutos de Castilla La Mancha, y, nosotros pensamos que fue una experiencia única, divertida e interesante. En nuestra opinión, los mejores proyectos presentados fueron estos (aunque subiremos a Drive todos los vídeos y fotos):

El nuestro:




















Los mejores:










































































Paso 4: Últimas modificaciones

Después, pusimos las LDR  para que siguieran la luz. Por último, pusimos las pilas de 1,5 V para los motores, y de 9 V para la placa, y cargamos el programa en Arduino IDE y después hicimos unas cuantas pruebas para probar el proyecto y ver si funciona.

LDR

Paso 3: Pegar a la madera las placas y los portapilas necesarios

Después, con tornillos y haciendo huecos en la tablilla de madera, pusimos la placa de Arduino y la plaquita, y después pusimos los cables, con soldador. Además, pegamos con termofusible un interruptor y un portapilas para las pilas de 1,5 V. Para la pila de 9V no tuvimos que pegar ningún portapilas con termofusible, ya que para ella utilizaríamos un cable conector, que se conectaba a la placa Arduino.




Paso 2: "Estructura" del robot

Al principio cogimos una tablilla de madera y pegamos con termofusible los motores, que tenían los cables para soldarlos a los de la plaquita, y las ruedas.




Paso 1: Prácticas antes de realizar el robot

Aprendimos a usar la placa de Arduino, haciendo varias prácticas (por ejemplo, a usar los LEDs sincronizadamente, a transmitir datos de la placa al ordenador, a usar el programa Arduino IDE...) y empezamos con el proyecto del robot seguidor de la luz (que funciona con LDRs).

































miércoles, 10 de junio de 2015

ROBOT SEGUIDOR DE LÍNEA

Haremos un robot seguidor de línea, y haremos prácticas y pruebas. Después de comprobarlo, iremos a la Feria Arduino.

jueves, 26 de marzo de 2015

BLOQUE 3: MAGIA

Aquí dejaré todos los códigos de los programas, que se pueden encontrar en la página CTC Castilla.

Leyendo y escribiendo en analógico
 
Aquí aprenderemos los conceptos básicos de la lectura analógica.

int ledPin = 13;
 
void setup() {
pinMode(ledPin, OUTPUT);
}
 
void loop() {
int val = analogRead(A5);
digitalWrite(ledPin, HIGH);
delay(val);
digitalWrite(ledPin, LOW);
delay(val);
}




//




int ledPin = 10;
int fade = 0;
 
void setup() {
// nothing here
}
 
void loop() {
analogWrite(ledPin, fade);
delay(10);
fade = fade + 10;
if (fade > 255) fade = 0;
}




//




int ledPin = 10;
int fade = 0;
 
void setup() {
// nothing here
}
 
void loop() {
analogWrite(ledPin, fade);
delay(10);
fade = fade +1;

}


LDR

En estas prácticas utilizaremos un LDR para cambiar la intensidad e un LED, de un zumbador,...


int ledPin=10;
int ldrPin=A1;void setup() {
//nothing here
}void loop() {
int ldrValue=analogRead(ldrPin);
int ledValue=map(ldrValue,0,1023,0,255);
 
analogWrite(ledPin, ledValue);
delay(10);
}




//




int speakerPin=10;
int ldrPin=A1;void setup() {
//nothing here
}void loop() {
int ldrValue=analogRead(ldrPin);
int speakerValue=map(ldrValue,0,1023,0,255);
 
analogWrite(speakerPin, speakerValue);
delay(10);
}




//



int ledPin=10;
int ldrPin=A1;
int potPin=A5;
 
void setup() {
  pinMode(ledPin,OUTPUT);
}
 
void loop() {
  int ldrValue=analogRead(ldrPin);
  int threshold=analogRead(potPin);
 
 
}
 if(ldrValue>threshold){
    digitalWrite(ledPin,LOW);
  }else{
    digitalWrite(ledPin,HIGH);
  }
  delay(10);
}


Enviando y recibiendo del ordenador

Aquí, podemos recoger datos en el ordenador de la intensidad de luz, o también podemos escribir un texto en el ordenador,...

void setup() {
Serial.begin(9600);
}
 
void loop() {
Serial.println("Hola Caracola");
delay(1000);
}



//




void setup() {
Serial.begin(9600);
}void loop() {
int lecturaSensor = analogRead(A1);
Serial.println(lecturaSensor);
delay(1000);
}




//




int ledPin=13;
int incomingByte;
 
void setup() {
Serial.begin(9600);
pinMode(ledPin,OUTPUT);
}
void loop() {
if(Serial.available()>0){
incomingByte=Serial.read();
if(incomingByte=='H'){
digitalWrite(ledPin, HIGH);
}
if(incomingByte=='L'){
digitalWrite(ledPin,LOW);
}
}
}



Aquí dejaré vídeos de cada uno:


Leyendo y escribiendo en analógico



















































LDR










































































Enviando y recibiendo del ordenador















































jueves, 12 de marzo de 2015

SPACE INTERFACE

Aquí están todos los códigos del Space Interface y hay algunas modificaciones en los códigos:

int switchstate = 0;
void setup(){

pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);

pinMode(2,INPUT);
}

void loop(){

switchstate = digitalRead(2);
if (switchstate == LOW) {


digitalWrite(3, HIGH);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
}
else {
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, HIGH);


delay(250);

digitalWrite(4, HIGH);
digitalWrite(5, LOW);

delay(250);
}
}




int switchstate = 0;
void setup(){

pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);

pinMode(2,INPUT);
}
void loop(){


switchstate = digitalRead(2);
if (switchstate == LOW) {


digitalWrite(3, HIGH);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
}
else {
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, HIGH);


delay(250);

digitalWrite(4, HIGH);
digitalWrite(5, LOW);


delay(50);
}
}




int switchstate = 0;
void setup(){

pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);

pinMode(2,INPUT);
}
void loop(){



switchstate = digitalRead(2);
if (switchstate == LOW) {


digitalWrite(3, HIGH);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
}
else {
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, HIGH);


delay(50);

digitalWrite(4, HIGH);
digitalWrite(5, LOW);


delay(50);
}
}



int switchstate = 0;
void setup(){

pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);

pinMode(2,INPUT);
}
void loop(){



switchstate = digitalRead(2);
if (switchstate == LOW) {


digitalWrite(3, HIGH);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
}
else {
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, HIGH);


delay(10);

digitalWrite(4, HIGH);
digitalWrite(5, LOW);


delay(10);
}
}



int switchstate = 0;
void setup(){

pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);

pinMode(2,INPUT);
}
void loop(){



switchstate = digitalRead(2);
if (switchstate == LOW) {


digitalWrite(3, HIGH);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
}
else {
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, HIGH);


delay(100);

digitalWrite(4, HIGH);
digitalWrite(5, LOW);


delay(10);
}
}

Entradas Y Beep

Estos son todos los códigos:

int speakerPin = 8;

void setup() {
pinMode(speakerPin, OUTPUT);
}

void loop() {
digitalWrite(speakerPin, HIGH);
delay(1000);
digitalWrite(speakerPin, LOW);
delay(1000);
}



int speakerPin = 8;

void setup() {
pinMode(speakerPin, OUTPUT);
}

void loop() {
digitalWrite(speakerPin, HIGH);
delay(100);
digitalWrite(speakerPin, LOW);
delay(100);
}



int speakerPin = 8;

void setup() {
pinMode(speakerPin, OUTPUT);
}

void loop() {
digitalWrite(speakerPin, HIGH);
delay(1);
digitalWrite(speakerPin, LOW);
delay(1);
}


int speakerPin = 8;

void setup() {
pinMode(speakerPin, OUTPUT);
}

void loop() {
digitalWrite(speakerPin, HIGH);
delayMicroseconds(1);
digitalWrite(speakerPin, LOW);
delayMicroseconds(1);
}


int inputPin = 9;
int ledPin = 13;

void setup() {
pinMode(inputPin, INPUT);
pinMode(ledPin, OUTPUT);
}

void loop() {
if (digitalRead(inputPin) == HIGH) {
digitalWrite(ledPin, HIGH);
} else {
digitalWrite(ledPin, LOW);
}
}


int inputPin = 5;
int speakerPin = 13;

void setup() {
pinMode(inputPin, INPUT);
pinMode(speakerPin, OUTPUT);
}

void loop() {
if (digitalRead(inputPin) == HIGH) {
digitalWrite(speakerPin, HIGH);
} else {
digitalWrite(speakerPin, LOW);
}
}

Modificaciones de Blink

Éste es el código original:

void setup() {
pinMode(13, OUTPUT);
}

void loop() {
digitalWrite(13, HIGH);
delay(1000);
digitalWrite(13, LOW);
delay(1000);
}

Y éstas son las variaciones que hemos hecho

- Latido del corazón:











- Delay a menos tiempo y a más:












- Delays a 10:








Estas son unas cuántas de las modificaciones que hemos hecho.

miércoles, 11 de marzo de 2015

Space Interface

En esta práctica inicial lo que hemos hecho ha sido modificar algunas cosas del programa original, por ejemplo, hemos cambiado la duración del sonido. Ahora añado los códigos y después añadiré los vídeos.


int switchstate = 0;
void setup(){
   
  pinMode(3,OUTPUT);
  pinMode(4,OUTPUT);
  pinMode(5,OUTPUT);
  
  pinMode(2,INPUT);
}

void loop(){

  // Esto es un comentario
  
  switchstate = digitalRead(2);
  if (switchstate == LOW) {
// El botón no está apretado

    digitalWrite(3, HIGH); // turn the green LED on pin 3 on
    digitalWrite(4, LOW);  // turn the red LED on pin 4 off
    digitalWrite(5, LOW);  // turn the red LED on pin 5 off
  }
  else {    // El botón está presionado
    digitalWrite(3, LOW); 
    digitalWrite(4, LOW);  
    digitalWrite(5, HIGH); 

    // wait for a quarter second before changing the light
    delay(250);

    digitalWrite(4, HIGH); // turn the red LED on pin 4 on
    digitalWrite(5, LOW);  // turn the red LED on pin 5 off

    // wait for a quarter second before changing the light
    delay(250);
  }
}   //vuelta al principio del bucle loop


//


int switchstate = 0;
void setup(){
   
  pinMode(3,OUTPUT);
  pinMode(4,OUTPUT);
  pinMode(5,OUTPUT);
  
  pinMode(2,INPUT);
}
void loop(){

  // Esto es un comentario
  
  switchstate = digitalRead(2);
  if (switchstate == LOW) {
// El botón no está apretado

    digitalWrite(3, HIGH); // turn the green LED on pin 3 on
    digitalWrite(4, LOW);  // turn the red LED on pin 4 off
    digitalWrite(5, LOW);  // turn the red LED on pin 5 off
  }
  else {    // El botón está presionado
    digitalWrite(3, LOW); 
    digitalWrite(4, LOW);  
    digitalWrite(5, HIGH); 

    // wait for a quarter second before changing the light
    delay(250);

    digitalWrite(4, HIGH); // turn the red LED on pin 4 on
    digitalWrite(5, LOW);  // turn the red LED on pin 5 off

    // wait for a quarter second before changing the light
    delay(50);
  }
}   //vuelta al principio del bucle loop

//


int switchstate = 0;
void setup(){
   
  pinMode(3,OUTPUT);
  pinMode(4,OUTPUT);
  pinMode(5,OUTPUT);
  
  pinMode(2,INPUT);
}
void loop(){

  // Esto es un comentario
  
  switchstate = digitalRead(2);
  if (switchstate == LOW) {
// El botón no está apretado

    digitalWrite(3, HIGH); // turn the green LED on pin 3 on
    digitalWrite(4, LOW);  // turn the red LED on pin 4 off
    digitalWrite(5, LOW);  // turn the red LED on pin 5 off
  }
  else {    // El botón está presionado
    digitalWrite(3, LOW); 
    digitalWrite(4, LOW);  
    digitalWrite(5, HIGH); 

    // wait for a quarter second before changing the light
    delay(50);

    digitalWrite(4, HIGH); // turn the red LED on pin 4 on
    digitalWrite(5, LOW);  // turn the red LED on pin 5 off

    // wait for a quarter second before changing the light
    delay(50);
  }
}   //vuelta al principio del bucle loop

//


int switchstate = 0;
void setup(){
   
  pinMode(3,OUTPUT);
  pinMode(4,OUTPUT);
  pinMode(5,OUTPUT);
  
  pinMode(2,INPUT);
}
void loop(){

  // Esto es un comentario
  
  switchstate = digitalRead(2);
  if (switchstate == LOW) {
// El botón no está apretado

    digitalWrite(3, HIGH); // turn the green LED on pin 3 on
    digitalWrite(4, LOW);  // turn the red LED on pin 4 off
    digitalWrite(5, LOW);  // turn the red LED on pin 5 off
  }
  else {    // El botón está presionado
    digitalWrite(3, LOW); 
    digitalWrite(4, LOW);  
    digitalWrite(5, HIGH); 

    // wait for a quarter second before changing the light
    delay(10);

    digitalWrite(4, HIGH); // turn the red LED on pin 4 on
    digitalWrite(5, LOW);  // turn the red LED on pin 5 off

    // wait for a quarter second before changing the light
    delay(10);
  }
}   //vuelta al principio del bucle loop

//

int switchstate = 0;
void setup(){
   
  pinMode(3,OUTPUT);
  pinMode(4,OUTPUT);
  pinMode(5,OUTPUT);
  
  pinMode(2,INPUT);
}
void loop(){

  // Esto es un comentario
  
  switchstate = digitalRead(2);
  if (switchstate == LOW) {
// El botón no está apretado

    digitalWrite(3, HIGH); // turn the green LED on pin 3 on
    digitalWrite(4, LOW);  // turn the red LED on pin 4 off
    digitalWrite(5, LOW);  // turn the red LED on pin 5 off
  }
  else {    // El botón está presionado
    digitalWrite(3, LOW); 
    digitalWrite(4, LOW);  
    digitalWrite(5, HIGH); 

    // wait for a quarter second before changing the light
    delay(100);

    digitalWrite(4, HIGH); // turn the red LED on pin 4 on
    digitalWrite(5, LOW);  // turn the red LED on pin 5 off

    // wait for a quarter second before changing the light
    delay(10);
  }
}   //vuelta al principio del bucle loop