Blockly otto
Descripció: Preparem entorn de programació per l'Otto Starter
Temps estimat: 60'
Dificultat: mig
Edat recomanada: a partir de 10 anys
Material: Otto Starter, IDE Arduino instal·lada, navegador web, cable USB
Objectius: Entendre el concepte de IDE de programació i familiaritzar-nos amb les llibreries que controlen l'Otto

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 13

void _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 pin
Otto.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;
}
}
Darrera modificació: diumenge, 12 de maig 2024, 17:46