How to program software and objects

Preview:

DESCRIPTION

Science Week 2013 Activity Centre Cultural de Martorell Integrated Plan for Foreign Languages Institut Pompeu Fabra

Citation preview

How to program software and objects

Dr. Francisco Pérez GarcíaInstitut Pompeu FabraDepartament de Tecnologia

Donat el caràcter i la finalitat exclusivament docent i eminentment il·lustrativa de les explicacions a classe d'aquesta presentació, l’autor s’acull a l’article 32 de la Llei de Propietat Intel·lectual vigent respecte de l'ús parcial d'obres alienes com ara imatges, gràfics o altre material contingudes en les diferents diapositives

ASE2013 Dr.Pérez 3

WHY PROGRAMMING?

• Computer science is no more about computers than astronomy is about telescopes. Edsger Dijkstra

• The computer revolution hasn’t happened yet. Allan Kay

• Debugging is the essence of intellectual activity. Seymour Pappert

ASE2013 Dr.Pérez 4

TINKERING

ASE2013 Dr.Pérez 5

THE HACKER ATTITUDE FOR OUR STUDENTS

ASE2013 Dr.Pérez 6

WWW.PROCESSING.ORG

Library:Nyatla Augmented Reality for Processing

LibraryOpen Computer Vision for Processing

WWW.ARDUINO.CC

Previous experiences: Contemporary Sciences and Research

http://www.youtube.com/watch?v=F_xkHOpMA9sASE2013 Dr.Pérez 15

ASE2013 Dr.Pérez 16

http://www.youtube.com/watch?v=O1MvwAw_MHkASE2013 Dr.Pérez 17

http://www.youtube.com/watch?v=FbuvE1n18ZE

ASE2013 Dr.Pérez 18

ASE2013 Dr.Pérez 19

ESPLORA

LEONARDO

Arduino Uno

ASE2013 Dr.Pérez 20

21

Comments about thecode

Setup codeDefine variables

Loop codeMain code

ASE2013 Dr.Pérez 22

ASE2013 Dr.Pérez 23

Transistor IRF530DC motor

Diode 1N4001Resistor

Arduino Uno

ARDUINO AND A DC MOTOR

AND THISSOURCE CODE

ASE2013 Dr.Pérez 24

const int transistorPin = 9; // connected to transistor gate

void setup() {pinMode(transistorPin, OUTPUT);}

void loop() { // loop= repeat again and againdigitalWrite(transistorPin, HIGH); // switch the motor ondelay(50); // wait for 50 milisecondsdigitalWrite(transistorPin, LOW); // switch the motor offdelay(5000); // wait for 5 seconds

}

SOURCE CODE FOR ARDUINO MOTOR

ASE2013 Dr.Pérez 25

MOTOR TO IRRADIATE A SURFACE VERY SLOWLY

ASE2013 Dr.Pérez 26

ASE2013 Dr.Pérez 27

http://www.youtube.com/watch?v=UQEtOJE02wE

ASE2013 Dr.Pérez 28

http://www.youtube.com/watch?v=e1iUjelHC6w

ASE2013 Dr.Pérez 29

Materials forLDR and LED-RGB using Arduino

● -4 resistor 220 Ω● -1 LDR sensor● -1 RGB LED● -1 potenciometer● -1 Arduino Uno● - Wire● - Breadboard● - USB wire AB type or microUSB for Arduino Leonardo

ASE2013 Dr.Pérez 30

LDR

Pulse width modulation

ASE2013 Dr.Pérez 31

ASE2013 Dr.Pérez 32

ASE2013 Dr.Pérez 33

Microcontroller ATMega328

Sensors(analog inputs)

Brain

Sight

Touch

Taste

SmellHearing

Muscles

Nerves Wires, Circuit

Heart

Actuators(analogoutputs)

ASE2013 Dr.Pérez 34

Analog to digital conversion

Analog sensor 0 to 5V

Sampling at Nyquist rate

Value of each sample transformed to binaryformat

ASE2013 Dr.Pérez 35

ASE2013 Dr.Pérez 36

SOURCE CODE: RGB-LED colour change depending on light level

int valueLDR = 1;

int ledRed = 9;

int ledGreen=10;

int ledBlue=11;

int pinLDR = 1;

//3 outputs for each RGB colour: red, green and blue

void setup(){

pinMode(ledRed, OUTPUT);

pinMode(ledGreen, OUTPUT);

pinMode(ledBlue, OUTPUT);

analogReference(EXTERNAL);

}

/*First we define the variable name as integer and it is assigneda value*/

/*The setup function comes before the loop function, and everythinghappens inside the curly backets*/

/*Outputs are declared in setup, this is done by usingthe pinMode function, in this particular example we declare numbers 9, 10 and 11 as OUTPUT (in capital letters)*/

// or /*Comment*/ can be anywhere, do not affect code, help others

ASE2013 Dr.Pérez 37

void loop() {

valueLDR = analogRead(pinLDR);

if(valueLDR >= 1023){

digitalWrite(ledRed, 128);

digitalWrite(ledGreen, 0);

digitalWrite(ledBlue, 0);

// digitalWrite to obtain different colours

}

else if((valueLDR >= 959) & (valueLDR < 1023)){

digitalWrite(ledRed, 255);

digitalWrite(ledGreen, 0);

digitalWrite(ledBlue, 0);

}

The “void” in the header is what the function will return (or spit out) when it happens, in this case it returns nothing so it is void

38

else if((valueLDR >= 895) & (valueLDR < 959)){

digitalWrite(ledRed, 255);

digitalWrite(ledGreen, 128);

digitalWrite(ledBlue, 0);}

else if((valueLDR >= 831) & (valueLDR < 895)){

digitalWrite(ledRed, 255);

digitalWrite(ledGreen, 255);

digitalWrite(ledBlue, 0);}

else if((valueLDR >= 767) & (valueLDR < 831)){

digitalWrite(ledRed, 255);

digitalWrite(ledGreen, 255);

digitalWrite(ledBlue, 128);}

else if((valueLDR >= 703) & (valueLDR < 767)){

digitalWrite(ledRed, 128);

digitalWrite(ledGreen, 255);

digitalWrite(ledBlue, 255);

}

else if((valueLDR >= 639) & (valueLDR < 703)){

digitalWrite(ledRed, 128);

digitalWrite(ledGreen, 128);

digitalWrite(ledBlue, 255);}

else if((valueLDR >= 575) & (valueLDR < 639)){

digitalWrite(ledRed, 0);

digitalWrite(ledGreen, 128);

digitalWrite(ledBlue, 255);}

else if((valueLDR >= 511) & (valueLDR < 575)){

digitalWrite(ledRed, 0);

digitalWrite(ledGreen, 0);

digitalWrite(ledBlue, 255);}

else if((valueLDR >= 447) & (valueLDR < 511)){

digitalWrite(ledRed, 0);

digitalWrite(ledGreen, 0);

digitalWrite(ledBlue, 128);

}

else if((valueLDR >= 383) & (valueLDR < 447)){

digitalWrite(ledRed, 0);

digitalWrite(ledGreen, 128);

digitalWrite(ledBlue, 0);}

else if((valueLDR >= 319) & (valueLDR < 383)){

digitalWrite(ledRed, 0);

digitalWrite(ledGreen, 255);

digitalWrite(ledBlue, 0);}

else if((valueLDR >= 255) & (valueLDR < 319)){

digitalWrite(ledRed, 128);

digitalWrite(ledGreen, 255);

digitalWrite(ledBlue, 0);}

else if((valueLDR >= 191) & (valueLDR < 255)){

digitalWrite(ledRed, 0);

digitalWrite(ledGreen, 255);

digitalWrite(ledBlue, 128);

}

39

else if((valueLDR >= 127) & (valueLDR < 191))

{

digitalWrite(ledRed, 128);

digitalWrite(ledGreen, 255);

digitalWrite(ledBlue, 128);}

else if((valueLDR >= 63) & (valueLDR < 127))

{

digitalWrite(ledRed, 128);

digitalWrite(ledGreen, 128);

digitalWrite(ledBlue, 128);}

else if((valueLDR >=0) & (valueLDR < 63)){

digitalWrite(ledRed, 55);

digitalWrite(ledGreen, 55);

digitalWrite(ledBlue, 55); }

else

{

digitalWrite(ledRed, 0);

digitalWrite(ledGreen, 0);

digitalWrite(ledBlue, 0);

}

}

void color(int red, int green, int blue)

{

analogWrite(ledRed, 255-red);

analogWrite(ledGreen, 255-green);

analogWrite(ledBlue, 255-blue);

// PWM for every colour40

41

http://www.youtube.com/watch?v=hxkYNy4zTWc

ASE2013 Dr.Pérez 42

Playing music with Arduinohttp://www.youtube.com/watch?v=YDL9WIVfS9w

43

ASE2013 Dr.Pérez 44

ASE2013 Dr.Pérez 45

Spychip technology?

46

SENSORS FOR ARDUINO

ASE2013 Dr.Pérez 47

Transistor: to amplify the signal of the sensor to the Arduino

48

Cloud internet of things platforms: www.cosm.comVisualize and store sensor data online www.nimbits.com

www.thingspeak.com49

ASE2013 Dr.Pérez 50

Approximate pricing

• Arduino Leonardo €25• Resistors, LEDs, LDR around €5• Breadboard €10• MQ sensors (CO, CH4, etc) €5 each• MG811 (CO2 sensor) €50• Voice recognition shield €60• Arduino for Android €50Sometimes very high import taxes from China!

51

Resources• www.arduino.cc• http://blocs.xtec.cat/mecanica• www.sparkfun.com• www.fritzing.org• www.buildinginternetofthings.com• www.atmel.com/avr• www.avrfreaks.net• www.mcselec.com• www.argentdata.com

52

ACKNOWLEGMENTS

The project «Contemporary Sciences and Research» (2012-2014)belongs to the Integrated Plan for Foreign Languages of DepartamentOf Education, Government of Catalonia

More info at www.tecnologies.net

53

Recommended