TÜG vanemate ringitund 08.11.17

ARDUINO 

Uue robotauto disainimine

Uue robotauto ehitus käib suure hooga. Väga palju erinevaid komponente ja andureid tuleb ära mahutada. Ja nagu selgub, siis see väga lihtne ei olegi. Tähtis on õige planeerimine ja disainimine.

mBot

Valmis ka meie esimene sinine mBot. Juhendi järgi kokkupanemine on üsna lihtne ja kokkupanemiseks piisab ühest tunnist.

Päike purki

Mis juhtub kui panna tennisepalli suurune päike purki?

Lasteaialapsed:

1. Purk plahvatab.
2. Purk läheb katki.
3. Purk läheb põlema.
4. Purk sulab ära.
5. Purk läheb üleni valgeks.
6. Ei ole päikest.
7. Siis ei ole enam ilusat taevast näha, lähevad pilved ette.
8. Taevas pole valge.
9. Kõik läheb pimedaks ja siis ei ole enam valge.
10. Siis ei ole enam taeval valgust, kõik on pime.
11. Tuleb tulekahju.

Koolilapsed:

1. Purk plahvatab.
2. Purk sulab ära.
3. Purgi peal olev plekk sulab ära.
4. Purk läheb põlema.
5. Keemiline reaktsioon tekib.
6. Ei ole võimalik.
7. Must auk.

TÜG koolivaheaja ringitund 24.10.17

JOOTMINE

Seekordses tunnis võtsime jootekolvid välja ja asusime LED lampe jootma. Saime kõik kolm erivärvilist lambikest põlema: punane, sinine ja roheline.

MOSS

MOSS’ist saime lumesaha valmis, aga kahjuks seekord see liikuma ei hakanud.

AIRBLOCK

Võtsime meie kõige uuemad robotid suure elevusega karbist välja. Üsna kiiresti said need kokku pandud ja telefoni abil hakkasid mööda põrandat liikuma ja õhus lendama.

Tegemist on siis Makeblock’i Airblockidega, ehk droon, millega on võimalik lennata ja mööda maad sõita. Seda saab kergelt ringi ehitada, juhtida telefoni abil ja ka programmeerida.

Näiteks võib ka midagi sellist teha.

TÜG vanemate ringitund 18.10.17

ARDUINO

Vilkuvad punased led lambid.

Prototüüpimine

  1. Idee üles kirjutamine
    Kasutada valmistehtud lahendust ning leida, kas seda saab odavamaks ja paremaks teha. Mille poolest oleks see teistest samasugustest parem.
    Alguses teha prototüüp breadboardi peale ja siis panna alles karpi.
  2. Ostunimekiri
    Valida välja kõik komponendid, mida on vaja.
  3. Ostunimekirja valideerimine
    Kontrollida, kas kõikide komponentide kasutamise järel Arduino peal pine jagub.
    Kontrollida voolutarvet. Kas komponendid vajavad 3,5 või 5 volti.
    Kontrollida, kas kõik komponendid sobivad omavahel kokku ja neid on piisavalt.
  4. Komponentide tellimine
  5. Skeemi joonistamine
  6. Tarkvara kirjutamine
  7. Komponentide ühendamine
    Kõigepealt ühendada komponendid ükshaaval ja siis kõik koos.
  8. Prototüübi valmis ehitamine
  9. Prototüübi testimine

Klaviatuuri ehitamise juhend
https://paulbleisch.com/2015/01/19/custom-arduino-membrane-keypad/

https://playground.arduino.cc/Code/Keypad

Telefoni ehitamise juhend

http://www.instructables.com/id/ArduinoPhone/

http://www.dx.com/s/arduino+gsm

 

TÜG vanemate ringitund 11.10.17

ARDUINO

Kui Arduinost ehitada telefon, siis …

… alumine on küpsis. Peal on kas vahukoor, moos või suhkur.

Temperatuuri ja niiskusandur AM2301

https://www.elecrow.com/wiki/index.php?title=Temperature_%26_Humidity_Sensor

#include "DHT.h"
#define DHTPIN 2    // modify to the pin we connected
// Uncomment whatever type you're using!
//#define DHTTYPE DHT11   // DHT 11 
//#define DHTTYPE DHT22   // DHT 22  (AM2302)
#define DHTTYPE DHT21   // DHT 21 (AM2301)
// Connect pin 1 (on the left) of the sensor to +5V
// Connect pin 2 of the sensor to whatever your DHTPIN is
// Connect pin 4 (on the right) of the sensor to GROUND
// Connect a 10K resistor from pin 2 (data) to pin 1 (power) of the sensor
DHT dht(DHTPIN, DHTTYPE);
void setup() {
 Serial.begin(9600); 
 Serial.println("DHTxx test!");
 dht.begin();
}
void loop() {
 // Reading temperature or humidity takes about 250 milliseconds!
 // Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
 float h = dht.readHumidity();
 float t = dht.readTemperature();
 // check if returns are valid, if they are NaN (not a number) then something went wrong!
 if (isnan(t) || isnan(h)) {
   Serial.println("Failed to read from DHT");
 } else {
   Serial.print("Humidity: "); 
   Serial.print(h);
   Serial.print(" %\t");
   Serial.print("Temperature: "); 
   Serial.print(t);
   Serial.println(" *C");
 }
}

 

 

 

TÜG vanemate ringitund 27.09.17

ARDUINO

Led lambid lülitiga

Lampide jaoks on vaja takistit 220Ω ja lüliti jaoks 10kΩ.

Programm C keeles lampide põlema ja vilkuma panemiseks.

// Lampide (3,4,5) ja lüliti (2) defineerimine
int switchState = 0;
void setup() {
pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
pinMode(2,INPUT);
}
void loop() {
switchState = digitalRead(2);

// Kui lülitit ei vajutata, siis on kõik lambid kustunud
if (switchState == LOW) {
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
} else {

// Kui lülitit vajutatakse, siis hakkavad lambid vilkuma veerand sekundiliste vahedega
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
delay(250);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
delay(250);
}
}

TFT ekraan

Ekraani ühendamise joonis ja skeem:

https://www.arduino.cc/en/Guide/TFTtoBoards

Ekraani programmikood:

https://www.arduino.cc/en/Guide/TFT

#include <TFT.h> // Hardware-specific library
#include <SPI.h>#define CS   10
#define DC   9
#define RESET  8  

// pin definition for the Leonardo
// #define CS   7
// #define DC   0
// #define RESET  1

TFT myScreen = TFT(CS, DC, RESET);

void setup(){
myScreen.begin();
myScreen.background(0,0,0);  // clear the screen with black
delay(1000);  // pause for dramatic effect
}
void loop(){
myScreen.stroke(255, 0, 0); // set the stroke color to red
myScreen.line(0, 10, myScreen.width(), 10); // draw a line across the screen
delay(1000);myScreen.noStroke(); // don’t draw a line around the next rectangle
myScreen.fill(0,255,0); // set the fill color to green
myScreen.rect(0,20,myScreen.width(),10); //draw a rectangle across the screen
delay(1000);

myScreen.fill(0,0,255); // set the fill color to blue
myScreen.stroke(255,255,255); // outline the rectangle with a white line
myScreen.rect(0,45,myScreen.width(),45); // draw a fat rectangle
delay(1000);

myScreen.background(0,0,0); // clear the screen before starting again
delay(1000);
}

 

 

TÜG vanemate ringitund 20.09.17

Vanemate ringitunnis tutvusime Arduino Uno ja ledidega. Kõigepealt proovisime ühe ledi põlema panna, siis lisasime nupu ja osad jõudsid ka veel mitu ledi lisada.

ARDUINO

Kolm led lampi nupuga

int switchState = 0;
void setup() {
pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
pinMode(2,INPUT);
}
void loop() {
switchState = digitalRead(2);
— Kui lülitit ei ole vajutatud, siis põleb nr 3 led ning 4 ja 5 on kustunud
if (switchState == LOW) {
digitalWrite(3, HIGH);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
} else {
— Kui lüliti on alla vajutatud, siis vilguvad kõik ledid 1/4 sek järel
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
delay(250);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
delay(250);
}
}

Vanemate ringitund 31.05.17

ARDUINO

Saatja ja vastuvõtja
Kui saatja poolel vajutada nuppu, siis vastuvõtja poolel läheb lamp põlema.

Saatja nupuga

#define rfTransmitPin 4
#define ledPin 13
#define buttonPin 2
int buttonState = 0;
void setup() {
  pinMode(rfTransmitPin, OUTPUT);
  pinMode(ledPin, OUTPUT);
  pinMode(buttonPin, INPUT);
}
void loop() {
  buttonState = digitalRead(buttonPin);
  if (buttonState == HIGH) {
    digitalWrite(rfTransmitPin, HIGH);
    digitalWrite(ledPin, HIGH);
  } else {
    digitalWrite(rfTransmitPin, LOW);
    digitalWrite(ledPin, LOW);
  }
}

Vastuvõtja lambiga

#define rfReceivePin A0  //RF Receiver pin = Analog pin 0
 #define ledPin 13        //Onboard LED = digital pin 13
 unsigned int data = 0;   // variable used to store received data
 const unsigned int upperThreshold = 70;  //upper threshold value
 const unsigned int lowerThreshold = 50;  //lower threshold value
 void setup(){
   pinMode(ledPin, OUTPUT);
   Serial.begin(9600);
 }
 void loop(){
   data=analogRead(rfReceivePin);    //listen for data on Analog pin 0
    if(data>upperThreshold){
     digitalWrite(ledPin, LOW);   //If a LOW signal is received, turn LED OFF
     Serial.println(data);
   }
   if(data<lowerThreshold){
     digitalWrite(ledPin, HIGH);   //If a HIGH signal is received, turn LED ON
     Serial.println(data);
   }
 }