Que puc fer amb l'Otto Starter?
![]() |
|
Preparar entorn:
1 - Descarregar una llibreria
Primer de tot em de preparar la IDE Arduino amb la llibreria https://github.com/OttoDIY/OttoDIYLib . Per fer ho anirem a la pàgina del projecte de GitHub, a l'apartat de "Releases" i descarregarem la llibreria en format zip https://github.com/OttoDIY/OttoDIYLib/archive/refs/tags/13.0.0.zip

2 - Instal·lar la llibreria a la IDE d'Arduino
Obrirem el programa Arduino IDE, i navegarem pels menús a "Esbós > Incloure Llibreria > Afegeix biblioteca en .ZIP..." i seleccionarem l'arxiu que ens hem descarregat en el pas anterior.

3 - Comprovar llibreria
Navegarem pels menús a "Fitxer >
Exemples > OttoDIYLib > Otto_happyBirthday" i seleccionarem
l'exemple.

Despleguem el menú d'"Eines" i ens assegurarem de tenir escollit:
- La placa correcta: Arduino Nano
- El processador correcte: ATmega328P (Old Bootloader)
- El port correcte: /dev/ttyUSB0 o similar (cal que l'Otto estigui connectat al ordinador per USB)
Verifiquen el codi i el carreguem.
3- Obrim la IDE mBlock
Anem a la IDE mBlock web ide.mblock.cc i si tenim usuari fem l'inici de sessió.
Si hi ha un dispositiu el trèiem i afegim una Arduino Nano:

Afegim una extensió que hem fet amb usuari Communia que es diu "Otto DIY" (cal haver seleccionat prèviament el dispositiu Arduino nano):

Fem un programa sencill com per exemple:

Copiem el codi (el trobareu prement el botó taronja "amb el símbol </>"):
// generated by mBlock5 for <your product>// codes make you happy#include <Arduino.h>#include <Wire.h>#include <SoftwareSerial.h>#include <Otto.h>Otto Otto;#define LeftLeg 2#define RightLeg 3#define LeftFoot 4#define RightFoot 5#define Buzzer 13void _delay(float seconds) {long endTime = millis() + seconds * 1000;while(millis() < endTime) _loop();}void setup() {Otto.init(LeftLeg, RightLeg, LeftFoot, RightFoot, true, Buzzer); //Set the servo pins and Buzzer pinOtto.home();while(1) {Otto.playGesture(OttoHappy);_delay(1);_loop();}}void _loop() {}void loop() {_loop();}
Finalment, obrim la IDEd'Arduino, borrem el codi que hi havia escrit, i hi enganxem el codi que hem fet a la IDE mBlock.
Ens assegurarem de tenir escollida la placa correcta (Arduino Nano), el processador correcte (ATmega328P Old Bootloader) i el port correcte (/dev/ttyUSB0 o similar),
Que puc fer amb un Otto
En aquest vídeo pots veure un resum de tots els gestos i passos amb què pots programar l'Otto a través de la llibreria OttoDIYLib.
Comprovar sensor Ultrasons
Rovarem aques codi amb la IDE d'arduino per comprobar el senor ultrasons amb el monitor de linia a 9600 Baud:
#include <Otto.h>
#include <SoftwareSerial.h>
Otto Otto;
#define LeftLeg 2
#define RightLeg 3
#define LeftFoot 4
#define RightFoot 5
#define Buzzer 13
#define Trigger 8
#define Echo 9
long ultrasound() {
long duration, distance;
digitalWrite(Trigger,LOW);
delayMicroseconds(2);
digitalWrite(Trigger, HIGH);
delayMicroseconds(10);
digitalWrite(Trigger, LOW);
duration = pulseIn(Echo, HIGH);
distance = duration/58;
return distance;
}
void setup(){
Otto.init(LeftLeg, RightLeg, LeftFoot, RightFoot, true, Buzzer);
pinMode(Trigger, OUTPUT);
pinMode(Echo, INPUT);
Serial.begin(9600);
Otto.home();
Otto.sing(S_happy);
}
void loop() {
int distance = ultrasound();
Serial.println(distance);
if ((distance < 30) && (distance > 15)) {
Otto.sing(S_OhOoh);
Serial.println("OhOoh");
} else if (distance < 15) {
Otto.sing(S_OhOoh2);
Serial.println("OhOoh2");
}
delay(50);
}
Anar a Eines > Monitor de sèrie i configurar-lo a 9600 baud. Hauríem de veure la distància que llegeixen els ultrasons.
Investigació lliure
Un cop hàgim mostrat com interactuar amb la llibreria podem deixar que els infants investiguin lliurement amb el robot i intentin programar segons les seves idees guiant-los, fent veure possibles problemes per desestimar aquelles idees difícils o impossibles d'executar i fomentant aquelles que siguin viables, sempre en forma de repte i només desencallant qüestions que no puguin superar per ells mateixos.
Configurem l'Otto Explorador
#include <Otto.h>
Otto Otto;
#define LeftLeg 2
#define RightLeg 3
#define LeftFoot 4
#define RightFoot 5
#define Buzzer 13
#define Trigger 8
#define Echo 9
const int sensorPin = A0;
long ultrasound() {
long duration, distance;
digitalWrite(Trigger,LOW);
delayMicroseconds(2);
digitalWrite(Trigger, HIGH);
delayMicroseconds(10);
digitalWrite(Trigger, LOW);
duration = pulseIn(Echo, HIGH);
distance = duration/58;
return distance;
}
boolean izqder = true;
bool obstacleDetected = false;
void setup(){
Otto.init(LeftLeg, RightLeg, LeftFoot, RightFoot, true, Buzzer);
pinMode(sensorPin, INPUT);
pinMode(Trigger, OUTPUT);
pinMode(Echo, INPUT);
Otto.home();
Otto.sing(S_happy);
}
void loop() {
if(obstacleDetected){
Otto.walk(2,1000,1);
Otto.home();
obstacleDetector();
} else {
obstacleDetector();
}
}
void obstacleDetector(){
int distance = ultrasound();
if(distance<15){
obstacleDetected = true;
} else {
obstacleDetected = false;
}
}



