Arduino software: https://www.arduino.cc/en/main/software Klaus modeltog, det levende hus: http://www.moppe.dk/levhusel.html TV simulation: http://www.herberts-n-projekt.de/basteleien-1/belebtes-haus/ RobotDyn: https://www.aliexpress.com/store/1950989 For at programmere en ATTiny45 chip skal bruges en Arduino (eller kompatibel) micro computer, dette kunne sagtens være en RobotDyn. Denne betjenes fra en alm. PC med software fra linket i Linkboxen. På Klaus hjemmeside er der en meget udførlig vejledning med link til alle de programdele man skal bruge, incl. Programmet til chippen (http://www.modelbaneeuropa.dk/klaus/arduino/ Klauslys5tiny.zip) Sådan forbindes Arduinoen via et fumlebræt til ATTiny45 chippen.
Efter programmering af ATTiny45 chippen forbindes den på ovenstående måde. Modstandene skal være ca. 1 K. Hver udgang kan trække 4 LED, svarende til ca. 40 miliampere. Med en Arduino Nano (eller kompatibel), kan man proframere direkte til en mini Arduino som derefter monteres direkte i huset med en 5V spænding. Nano en er tilpas lille og har 13 udgange (mod ATTiny ens 5 udgange), til f.eks. Lys i rum eller lign. Prisen på Nanoen er kun 2-5 kr. højere end prisen for ATTint45 chippen, nemlig ca. 2$. RobotDyn Nano V3 ATmega328 fylder kun 43 mm x 18,5 mm og koster kun ca. 2$. Kan købes på: https:// www.aliexpress.com/store/product/ Nano-V3-ATmega328-CH340G-Micro- USB-Pin-headers-NOT-soldered- Compatible-for-Arduino-Nano-V3-0/1950989_32664577152.html? spm=2114.8147860.0.0.rluy1u Hvis man bestiller for under 80 kr. incl porto, er købet toldfrit.
/* Enkelt blinkende diode med tilfã ldigt interval Tà nder og slukker for 2 lysdioder koblet til ATtiny processoren Tider for lysdiode tã ndt og slukket vã lges tilfã ldigt i tidsrummet mellem de 2 variabler "interval(x)min" og "interval(x)max". Alle tider er i millisekunder */ // Konstanter, informationer der aldrig à ndrer sig // Fortà ller hvilke udgange der bruges: const int led1pin = 0; // nummret pã udgangen lysdiode 1 er koblet til const int led2pin = 1; // nummret pã udgangen lysdiode 2 er koblet til // Variabler for udgang 1 som à ndrer sig under gennemlã b af program: int led1state = HIGH; // Status pã udgangen, er den tã ndt (HIGH) eller slukket (LOW) long previousmillis1 = 0; // Tidspunkt for, hvornã r udgangen sidst skiftede status long interval1min = 2500; // Korteste tidsinterval for lysdiode tã ndt eller slukket long interval1max = 5500; // Là ngeste tidsinterval for lysdiode tã ndt eller slukket long interval1 = 1; // Aktuelt tidsinterval, som à ndrer sig hver gang status pã udgang skifter.
// Variabler for udgang 2 som à ndrer sig under gennemlã b af program: int led2state = HIGH; // Status pã udgangen, er den tã ndt (HIGH) eller slukket (LOW) long previousmillis2 = 0; // Tidspunkt for, hvornã r udgangen sidst skiftede status long interval2min = 25000; // Korteste tidsinterval for lysdiode tã ndt eller slukket long interval2max = 55000; // Là ngeste tidsinterval for lysdiode tã ndt eller slukket long interval2 = 1; // Aktuelt tidsinterval, som à ndrer sig hver gang status pã udgang skifter. void setup() { } // Sà tter udgangene til output: pinmode(led1pin, OUTPUT); pinmode(led2pin, OUTPUT); void loop() { // Ser efter om det er tid til at skifte status pã udgang 1 // Gà res ved at se om forskellem mellem aktuel tid og tidspunktet // for sidste skift er stã rre end det satte interval unsigned long currentmillis1 = millis(); if(currentmillis1 - previousmillis1 > interval1) { // gemmer sidste gang udgangen skiftede previousmillis1 = currentmillis1;
} // his udgangen er slukket tã nde den og omvendt: if (led1state == LOW) led1state = HIGH; else led1state = LOW; // sã tter udgangen med vã rdien af led1state (HIGH/LOW): digitalwrite(led1pin, led1state); // sã tter interval1 til en ny tilfã ldig vã rdi mellem min og max interval1 = random(interval1min,interval1max); // Ser efter om det er tid til at skifte status pã udgang 2 // GÃ res ved at se om forskellem mellem aktuel tid og tidspunktet // for sidste skift er stã rre end det satte interval unsigned long currentmillis2 = millis(); if(currentmillis2 - previousmillis2 > interval2) { // gemmer sidste gang udgangen skiftede previousmillis2 = currentmillis2; // his udgangen er slukket tã nde den og omvendt: if (led2state == LOW) led2state = HIGH;
else } led2state = LOW; // sã tter udgangen med vã rdien af led1state (HIGH/LOW): digitalwrite(led2pin, led2state); // sã tter interval2 til en ny tilfã ldig vã rdi mellem min og max interval2 = random(interval2min,interval2max);