Monthly Archives: maig 2015

SCRATCH: Arkanoid

El clàssic joc pica-maons es pot replicar sense gran esforç en Scratch.
Començarem per dibuixar els objectes que necessitem. Dibuixeu quatre objectes:

  • D’una banda la paleta, l’anomenes paleta. 
  • d’altra banda la pilota, l’anomenes pelota
  • i finalment un maó que pintarem d’un determinat color, l’anomenes ladrillo
  • Una línia llarga que la posareu al fons del joc. L’anomenareu linea
Desplaceu els objectes als llocs on voleu que estiguin. De maó feu-ne només un, la resta els duplicareu un cop el codi funcioni

Ara que ja tenim els objectes, comencem a programar. El primer que farem és moure la paleta. Clica sobre la icona de la paleta i copia els següent codi a la pantalla.

La pala es controla amb el moviment del ratolí.

Ara cliqueu sobre el dibuix de la pilota i copia els següents codis:


El primer mou la pilota, si canvieu el nombre de passos, canviareu la velocitat.

El segon canvia la direcció cada cop que toca la paleta. Podeu variar els números a l’atzar per veure els resultats.
Ara clica sobre el maó i copia el seu codi. Heu de crear la variable puntos.
Utilitzant una variable punts podrem anar sumant de a 10 cada vegada que es trenca un maó. Utilitzem Enviar ladrilloroto per enviar un senyal a la pilota als efectes que canviï de direcció. De no fer això la mateixa seguiria de llarg i amb el mateix tir trencaria diversos blocs.
Torna a clicar la pilota i copia el següent codi:
Cada cop que toca un maó, canvia la direcció.
Provem el joc fins ara i si realment la pilota trenca el totxo el que fem és copiar els maons moltes vegades i canviar-los de color (Recorda copiar el maó únicament quan aquest funcionat sinó hauràs de corregir els errors maó per maó). Amb el ratolí desplaça els maons al lloc que vulguis.
Bé, per acabar hem de fer que perdi quan la pilota cau. Per a això realitzarem un petit truc que consisteix que quan la pilota toqui la línia del fons enviarem a l’escenari un senyal de perdre perquè canviï el fons i aturi el programa.
La rematada de l’exercici seria llavors el següent. Ves al codi de la pilota i copia el següent codi:
Ara construireu dos escenaris, el del joc i el de quan s’acaba la partida. Els escenaris els podeu crear vosaltres:
  • L’escanari del joc l’anomenarei stars
  • L’escenari final de joc l’anomenareu perdio
Guarda el codi i envia’l.

ARDUINO: Pràctica 11: Motors de corrent continu controlat per L293

Un motor de corrent continu és un actuador que consumeix una intensitat relativament elevada. La intensitat de corrent màxima que Arduino pot subministrar per un pin de sortida és de 40 mA. Així doncs, per poder governar a un DC motor, així com a qualsevol altre actuador de considerable potència, podem utilitzar:
  • un transistor.
  • un relé.
  • 1 integrat L293D (consisteix en un pont H de díodes, específic per al control de motors de corrent continu, inclusivament el canvi de gir).
Per al control dels nostres motors usarem el L293D

El circuit integrat  L293D








Aquest circuit integrat és un element que serveix per controlar el sentit de gir de 2 motors de corrent continu. Està basat amb els ponts en H que permeten canviar la polaritat dels motors. Aquest circuit per dintre és com es mostra a l’esquema de sota i tal com haurien d’anar connectats els motors:

Per veure com funciona, feu el muntatge de sota connectant un motor al circuit L293D i a la placa Arduino tal com es veu a sota. La placa Arduino està a 5V. Per al control de velocitat i sentit del motor ho farem amb un potenciòmetre, tal com està connectat a sota. Quan giris el potenciòmetre veuràs que podràs canviar la velocitat i el sentit de gir.
Entreu a bitbloq i copieu els següents blocs:
El codi és el següent:
void setup()
{
pinMode(9,OUTPUT);
pinMode(10,OUTPUT);
}

void loop()
{
int pot=analogRead(A0);
int motord=map(pot,0,1023,0,255);
int motore=map(pot,0,1023,255,0);
analogWrite(9,motord);
analogWrite(10,motore);
}

ARDUINO: Pràctica 10: El sensor d’ultrasons

Aquest sensor usa senyals d’ultrasonors per detectar objectes a una certa distància. Depenen de la resposta en el rebot del so, activa o desactiva l’entrada on està connectat a l’Arduino. Farem una pràctica per veure com es connecta.
Muntarem una alarma amb el sensor d’ultrasons. Necessitareu el sensor i un LED que s’encengui quan el sensor detecti presència, i un resistor per no cremar el LED.

El sensor llença un pols i rep una resposta a través de l’Eco que aquest fa en rebotar contra una superfície sòlida. En aquest cas, per exemple una paret. Aquest principi és el que utilitzarem per a poder mesurar la distància; mesurant el temps entre l’anada i la tornada i sabent la velocitat de propagació del so en l’aire. Munteu amb la placa el següent circuit.
Obre bitbloq i copia el següent esquema:

EL codi és el següent:
long TP_init(int trigger_pin, int echo_pin);
long Distance(int trigger_pin, int echo_pin);

void setup()
{
pinMode( 10 , INPUT );
pinMode( 9 , OUTPUT );
pinMode(7,OUTPUT);
}

void loop()
{
int Distancia=Distance(9,10);
if (Distancia < 40) {
digitalWrite(7,HIGH);
delay(1000);
}else {
digitalWrite(7,LOW);
delay(1000);
}
}

/*** Function definition ***/
long TP_init(int trigger_pin, int echo_pin)
{
digitalWrite(trigger_pin, LOW);
delayMicroseconds(2);
digitalWrite(trigger_pin, HIGH);
delayMicroseconds(10);
digitalWrite(trigger_pin, LOW);
long microseconds = pulseIn(echo_pin ,HIGH);
return microseconds;
}
long Distance(int trigger_pin, int echo_pin)
{
long microseconds = TP_init(trigger_pin, echo_pin);
long distance;
distance = microseconds/29/2;
if (distance == 0){
distance = 999;
}
return distance;
}

El pin 9 envia el senyal d’ultrasons, mentre que el 10 és el que el rep. Si la distància és menor de 40cm, s’encendrà el LED del pin 7. Si la distància augmenta, el LED s’apaga.

PRÀCTICA AVANÇADA: usa dos LEDS, un de verd i un de vermell. Quan la distància del sensor sigui més petit que 30 cm, s’encengui el vermell i s’apagui el verd. Si la distància és major, que s’encengui el verd i s’apagui el vermell.

ARDUINO: Pràctica 9: Cicle For(). Llums intermitents

Algunes vegades es requereix nomenar molts pins amb una sola instrucció i fer alguna cosa amb cada un. Per exemple, en aquest exemple parpellegen 6 LEDs connectats a Arduino, usant un cicle for () per al cicle d’anada i tornada a través dels pins digitals 2 a 7. Els LEDs s’encenen i apaguen en seqüència, usant les funcions digitalWrite () i delay ().
PRÀCTICA:
Què es necessita?
  • arduino
  • 6 Resistències de 220 ohms
  • 6 LEDs
  • Cables d’interconnexió
  • protoboard
Connectar dels sis LEDs cadascun amb una resistència de 220 en sèrie, als pins 2 a 7 de l’Arduino. Aquí es troba l’esquema.
Enteu a bit bloq i copieu el següent esquema:
En el cicle principal del codi, s’utilitzen dos cicles per recórrer de forma incremental, pas a pas a través dels LEDs, un per un, del pin 2 al pin 7. Quan el pin 7 està encès, el procés s’inverteix, fent que els LEDs es prenguin al contrari de com ja s’havia fet.
El codi és el següent:
void setup()
{
pinMode(2,OUTPUT);
pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
pinMode(6,OUTPUT);
pinMode(7,OUTPUT);
}

void loop()
{
digitalWrite(2,LOW);
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
digitalWrite(6,LOW);
digitalWrite(7,LOW);

int pins=0;
for (pins = 2; pins <= 7; pins++) {
pinMode(pins,OUTPUT);
digitalWrite(pins,HIGH);
delay(100);
}
for (pins = 7; pins <= 2; pins--) {
pinMode(pins,OUTPUT);
digitalWrite(pins,LOW);
delay(100);
}

}

Proveu de canviar el temps d’espera per veure diferents efectes.

PRÀCTICA AVANÇADA: incorporeu més leds i mireu de fer el mateix efecte.

PRÀCTICA AVANÇADA 2: serieu capaços de fer la seqüència de manera que només estigui un llum encès?

ARDUINO. Pràctica 8: EL sensor CNY70

El dispositiu CNY70 és un sensor òptic infraroig de curt abast (menys de 5 cm) que s’utilitza per detectar colors d’objectes i superfícies. El seu ús més comú és per construir petits robots seguiu la línia. Conté un emissor de radiació infraroja (fotodiode) i un receptor (fototransistor). El fotodíode emet un feix de radiació infraroja, el fototransistor rep aquest feix de llum quan es reflecteix sobre alguna superfície o objecte.
Depenent de la quantitat de llum rebuda pel fototransistor el dispositiu envia un senyal de retorn a Arduino.
El sensor CNY70 pot utilitzar com a entrada digital o analògica. En aquest exemple s’ha utilitzat com a entrada digital per a distingir dos colors: blanc o negre. Quant el sensor està orientat cap a una superfície o objecte de color negre aquest absorbeix gran part de la llum emesa pel díode. Llavors el sensor enviarà un valor alt (HIGH – 1) a Arduino. Al seu torn quan el sensor se situa sobre una superfície o objecte de color blanc gran part de la llum emesa pel díode serà reflectida al fototransistor. Llavors, el sensor enviarà un valor alt (LOW- 0) a Arduino.
El CNY70 té quatre terminals. Per distingir els terminals per tal de poder fer la connexió correctament, has de col·locar el sensor amb la part del fotodíode i del fototransistor cap amunt i els terminals cap avall. A més, la cara del sensor que està serigrafiada amb el nom del dispositiu ha d’estar situada en la teva dreta, tal com es mostra en la següent imatge.
Aquest sensor disposa de 4 terminals, dos d’ells es connecten entre ells per connectar al positiu (cable vermell), un altre al negatiu (cable negre), i un tercer que és que va als pins d’entrada d’arduino (cable blanc de la foto).
Aquests sensors els podeu trobar ja encapsulats amb les connexions preparades.
La pràctica que fareu serà  encendre un LED quan aquest detecti una superfície negra. Entreu a bitbloiq i copieu el següent esquema. Al pin digital 8 hi ha el sensor, i al 5 poseu el LED. Recordeu de posar una resistència en sèrie per a que no es faci malbé.
L’Esquema que heu de fer amb la placa és el següent:
Carregueu el programa, i poseu un paper negre sota el sensor a veure què passa. El LED s’hauria d’encendre
El codi del programa és el següent:
void setup()
{
pinMode( 8 , INPUT);
pinMode(5,OUTPUT);}

void loop()
{ 
int color=digitalRead(8); 
if (color == 0) 
{ 
digitalWrite(5,HIGH); delay(300);
}
}

PRÀCTICA AVANÇADA: usant dos leds i el sensor d’infraroigs, feu que s’engegui un d’ells qua passi la superfície negra, i que s’encengui l’altre quan l’apartis, apagant el primer.