Upload
francisco-perez
View
398
Download
0
Embed Size (px)
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
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