Un robot que saluda
Completion requirements
![]() |
|
Desenvolupament
Estructura:

- 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):
- Retallem el robot i el barç a part
- Decorem el nostre robot.
- 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)
- Enganxa'm el barç a la peça del minisevo.
Connexions:
- Posem una pila al porta piles i ho connectem a la placa
- Connectem el miniservo al port 6

Programació
Ens dirigim a la ide de mblock https://ide.mblock.cc i fem el següent programa:
- Escollim la targeta Arduino Uno
- 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
- Copiem el codi de "vista prèvia: Arduinoc".
- Obrim la IDE d'Arduino.
- Esborrem el que hi hagi i enganxem el nostre codi
- Connectem la placa per USB (parem l'alimentació de la pila)
- Assegurem que estigui escolli el port i la placa al menú d'Eines
- Verifiquem el codi
- 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.

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
- Projecte a Mblock https://planet.mblock.cc/project/1464879
- Projecte a Mblock - Complicant el robot - https://planet.mblock.cc/project/2625275
- Projecte a Mblock - Refactoritzant el codi del robot - https://planet.mblock.cc/project/1464906
Last modified: Wednesday, 10 May 2023, 12:01 PM
