====== 2x2x2 LED-kuutio ======
{{ :tiedosto_009.jpeg?nolink&400 | 2x2x2 LED-kuutio}}
2x2x2 LED-kuution ohjaaminen on vielä helpohkoa.
Tässä esitetty koodi on versio 1. Tätä voi yksinkertaistaa silmukoita ja funktioita käyttämällä.
void setup() {
// Mihin LEDit on kytketty
// Tämä ei ole näppärin tapa tehdä tätä, osaavat voivat käyttää for-silmukkaa
pinMode(3, OUTPUT);
digitalWrite(3, LOW);
pinMode(4, OUTPUT);
digitalWrite(4, LOW);
pinMode(5, OUTPUT);
digitalWrite(5, LOW);
pinMode(6, OUTPUT);
digitalWrite(6, LOW);
pinMode(7, OUTPUT);
digitalWrite(8, LOW);
pinMode(9, OUTPUT);
digitalWrite(9, LOW);
pinMode(10, OUTPUT);
digitalWrite(10, LOW);
pinMode(11, OUTPUT);
digitalWrite(12, LOW);
// Mihin transistorit on kytketty
pinMode(13, OUTPUT);
digitalWrite(13, LOW);
pinMode(14, OUTPUT);
digitalWrite(14, LOW);
pinMode(15, OUTPUT);
digitalWrite(16, LOW);
}
void loop() {
// Sytytetään pylvään 1 tason 1 LED
digitalWrite(3, HIGH);
digitalWrite(13, HIGH);
delay(500);
// Sammutetaan pylvään 1 tason 1 LED
digitalWrite(3, LOW);
digitalWrite(13, LOW);
delay(500);
}
====== 4x4x4 LED-kuution ohjaus ======
{{ :tiedosto_000.jpeg?nolink&400 | 4x4x4 LED kuutio}}
{{ :tiedosto_004.jpeg?nolink&400 | Transistorit saa kauniisti, kun osaa}}
{{ :tiedosto_006.jpeg?nolink&400 | Samoin vastukset}}
Osoitteesta https://youtu.be/gO_9kC0pbzA löydät Youtube-videon kuutiosta.
int pylvaat[]={2, 3, 4, 5, 6, 7, 8, 9, 10};
int tasot[]={11, 12, 13};
void setup() {
for (int i=0; i<=13; i++)
{
pinMode(i, OUTPUT);
digitalWrite(i, LOW);
}
}
void loop() {
//sytyta(1, 1);
vilauta(0 , 0, 5);
vilauta(4 , 1, 5);
vilauta(8 , 2, 5);
delay(500);
vilauta_taso(1, 500);
delay(500);
}
// Sytytetään päälle pylvään ja tason määrittelemä LED
// HUOMAA, että LED jää päälle!
void sytyta(int pylvas, int taso)
{
digitalWrite(pylvaat[pylvas], HIGH);
digitalWrite(tasot[taso], HIGH);
}
// Vilautetaan annetun ajan LEDiä
void vilauta(int pylvas, int taso, int aika)
{
digitalWrite(pylvaat[pylvas], HIGH);
digitalWrite(tasot[taso], HIGH);
delay(aika);
digitalWrite(pylvaat[pylvas], LOW);
digitalWrite(tasot[taso], LOW);
}
void vilauta_taso(int taso, int aika)
{
digitalWrite(tasot[taso], HIGH);
for (int i=0; i<9; i++)
{
digitalWrite(pylvaat[i], HIGH);
}
delay(aika);
digitalWrite(tasot[taso], LOW);
for (int i=0; i<9; i++)
{
digitalWrite(pylvaat[i], LOW);
}
}
====== Moottorin ohjaus ======
{{ :img_9176.jpg?nolink&400 | Servomoottori }}
#include
AF_DCMotor moottori(3);
AF_DCMotor ohjaus(1);
void setup() {
ohjaus.setSpeed(255);
}
void loop() {
/* moottori.setSpeed(100); // hidas kiihdytys
moottori.run(FORWARD);
delay(1000);
*/
ohjaus.setSpeed(255);
ohjaus.run(BACKWARD);
moottori.setSpeed(255);
moottori.run(FORWARD);
delay(1000);
moottori.run(RELEASE);
ohjaus.run(RELEASE);
delay(1000);
/* moottori.setSpeed(100); // hidas kiihdytys
moottori.run(BACKWARD);
delay(1000);
*/
moottori.setSpeed(255);
moottori.run(BACKWARD);
ohjaus.run(FORWARD);
delay(1000);
moottori.run(RELEASE);
ohjaus.run(RELEASE);
delay(1000);
}