Descripció: Farem un robot de cartró mou el braç amb una Arduino UNO i un miniservo.
Temps estimat: 60'
Dificultat: principiant
Edat recomanada: Totes les edats
Material: Cartró, tisores, cinta adhesiva, brides, miniservo, placa Arduino UNO, portapiles i pila 9v i elements de decoració (ulls adhesius, cartolina, pega, gomma eva...). Opcionalment led bicolor i polsador.
Objectius: Iniciació a la robòtica amb un material modelable i personalitzable com el cartó.

 

 

Desenvolupament

Estructura:

cartro per retallar robot

  1. Dibuixem un robot a un tros de cartó amb un braç a part (com més quadrat sigui el robot més fàcil serà de retallar):
  2. Retallem el robot i el barç a part
  3. Decorem el nostre robot.
  4. Fem un forat pel miniservo a l'alçada de l'omòplat i el fixem amb una brida o cinta adhesiva (evitem pega perquè voldrem recuperar tots els elements)
  5. Enganxa'm el barç a la peça del minisevo.

Connexions:

  1. Posem una pila al porta piles i ho connectem a la placa
  2. Connectem el miniservo al port 6


Programació

Ens dirigim a la ide de mblock https://ide.mblock.cc i fem el següent programa:

  1. Escollim la targeta Arduino Uno
  2. Fem el programa
    • Afegim: Esdeveniments > Quan s'engegui l'Arduino
    • Afegim: Control > per sempre
    • Afegim: Pin > estableix el servo del pin 6 com a 45
    • Afegim: Control > espera 1 s
    • Afegim: Pin > estableix el servo del pin 6 com a 135
    • Afegim: Control > espera 1 s


El codi en ArdunioC

// generated by mBlock5 for <your product>
// codes make you happy

#include <Arduino.h>
#include <Wire.h>
#include <SoftwareSerial.h>
#include <Servo.h>

Servo servo_6;

void _delay(float seconds) {
long endTime = millis() + seconds * 1000;
while(millis() < endTime) _loop();
}

void setup() {
servo_6.attach(6);
while(1) {
servo_6.write(45);
_delay(1);
servo_6.write(135);
_delay(1);

_loop();
}

}

void _loop() {
}

void loop() {
_loop();
}

Carreguem el programa a la placa

  1. Copiem el codi de "vista prèvia: Arduinoc".
  2. Obrim la IDE d'Arduino.
  3. Esborrem el que hi hagi i enganxem el nostre codi
  4. Connectem la placa per USB (parem l'alimentació de la pila)
  5. Assegurem que estigui escolli el port i la placa al menú d'Eines
  6. Verifiquem el codi
  7. Pugem el codi


Complicant el robot

Afegim un botó al pin 10 i un led bicolor al pin 2 i 3. De la següent manera fem que el robot saludi només quan s'apreta el pulsador.

robot amb polsador

IDE MBlock:

Arduino IDE:

// generated by mBlock5 for <your product>
// codes make you happy

#include <Arduino.h>
#include <Wire.h>
#include <SoftwareSerial.h>
#include <Servo.h>

Servo servo_6;

void _delay(float seconds) {
long endTime = millis() + seconds * 1000;
while(millis() < endTime) _loop();
}

void setup() {
pinMode(10,INPUT);
servo_6.attach(6);
pinMode(2,OUTPUT);
pinMode(3,OUTPUT);
while(1) {
if(digitalRead(10) == 1.000000){
servo_6.write(135);
digitalWrite(2,0);
digitalWrite(3,1);

}else{
servo_6.write(45);
digitalWrite(2,1);
digitalWrite(3,0);

}

_loop();
}

}

void _loop() {
}

void loop() {
_loop();
}


Refactoritzant el codi del robot

A partir de l'exercici anterior millorem el codi del programa introduint funcions i variables per fer-lo més entenedor.

IDE MBlock:





Arduino IDE:

// generated by mBlock5 for <your product>
// codes make you happy

#include <Arduino.h>
#include <Wire.h>
#include <SoftwareSerial.h>
#include <Servo.h>

float pulsador = 0;

Servo servo_6;
void esperant(){
servo_6.write(45);
digitalWrite(2,1);
digitalWrite(3,0);

}
void lectura_de_sensors(){
pulsador = digitalRead(10);

}
void saluda(){
servo_6.write(135);
digitalWrite(2,0);
digitalWrite(3,1);

}

void _delay(float seconds) {
long endTime = millis() + seconds * 1000;
while(millis() < endTime) _loop();
}

void setup() {
servo_6.attach(6);
pinMode(2,OUTPUT);
pinMode(3,OUTPUT);
pinMode(10,INPUT);
esperant();
while(1) {
lectura_de_sensors();
if(pulsador == 1.000000){
saluda();

}else{
esperant();

}

_loop();
}

}

void _loop() {
}

void loop() {
_loop();
}


Enllaços d'interès


Darrera modificació: dimecres, 10 de maig 2023, 12:01