commit 3f4d14f8fd1dc5f0e781a0b4f6f26f006e6fa150 Author: Serguei Chmod777 Date: Tue Oct 6 00:41:48 2015 +0200 new file: LICENSE new file: backplane.jpg new file: readme.md new file: top_board.jpg new file: unabkraft.ino new file: yellow_prints.png diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..39f70fc --- /dev/null +++ b/LICENSE @@ -0,0 +1,19 @@ + Copyright (C) 2015 serguei.chmod777 + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + + -- + So whatever, even if it appears as a nonsense within a GPL one to some + libre-fundamentalists, don't forget to use OpenBSD anyway, because it's + cool, and obviously, this system ain't (specially) for integrists! diff --git a/backplane.jpg b/backplane.jpg new file mode 100644 index 0000000..43ca771 Binary files /dev/null and b/backplane.jpg differ diff --git a/readme.md b/readme.md new file mode 100644 index 0000000..7b9f9e7 --- /dev/null +++ b/readme.md @@ -0,0 +1,28 @@ +``` + As I wrote, it's merely a toy simulating the behavior of... you know, which +starts a running of LEDs, before a buzzer blows up in a frightening ``bip!''. +However, the board could be used for lots of simple RTD tricks. + + For those who do hacks on a keyboard after checking their hands are clean, +I mean living on OpenBSD (krkrkr), ``avrdude'' exists in the 'ports'. +So, after executing a ``make'' in the dev directory ('cause ``arduinoproject'' +creates a sane Makefile), the following line (*) could give a hand for +uploading the code in the Arduino ("nano", I didn't mentioned it, just read the +header of the [sourceCode].ino) : + +#======================upload.sh=========================# +#!/bin/sh +# To be loaded from the current project directory ! +avrdude -p atmega328p -P /dev/cuaU0 -c stk500v1 -b 57600 (*) +-U flash:w:applet/unabkraft.hex +#========================================================# + +-- +The code name's root ain't specifically an ethical allusion, so if you +really wanna figure out where it comes from : +just look for some well known mad mathematician, Ted Kaczynski. + +I want to emphasise that I disclaim forcefully any kind of transformation +of the current project, that would deal with the PWM pins... no need for +further details. Better promote WMP ! http://wmp.tetalab.org/ +``` diff --git a/top_board.jpg b/top_board.jpg new file mode 100644 index 0000000..ce3fa71 Binary files /dev/null and b/top_board.jpg differ diff --git a/unabkraft.ino b/unabkraft.ino new file mode 100644 index 0000000..a6ba736 --- /dev/null +++ b/unabkraft.ino @@ -0,0 +1,299 @@ +/******************************************************************************\ +* author : serguei_chmod77 (Arthur) * +* codename : unabkraft * +* testing board : unab77 * +* processor : at(mel)mega 328p * +* date : 07.08.2015 * +* version : 1.5.2 ``Boolzor powered'' * +* compiler : avrdude, OpenBSD 5.6 * +\******************************************************************************/ + + +// Id of digital-pins by nicknames : +const int pushButt = 2; +const int ledBarA = 3, ledBarB = 4, ledBarC = 5, ledBarD = 6, ledBarE = 7; +const int ledBarF = 8, ledBarG = 9, ledBarH = 10, ledBarI = 11; +const int mainLed = 12, bell = 13; +// Some integer variables for arithmetical counts along loop() : +int i = 2000, k = 0, pb = 0, lb = 0, s = 0; + +int lastDebounceTime = 0; +long ctDownSet = 0, dc = 0, cd = 0; +bool zor = true, modeState = false; + +void defusing() { + zor = false; +} + +void setup(void) { + // Pins input/output mode global setting : + pinMode(mainLed, OUTPUT); + pinMode(ledBarA, OUTPUT); + pinMode(ledBarB, OUTPUT); + pinMode(ledBarC, OUTPUT); + pinMode(ledBarD, OUTPUT); + pinMode(ledBarE, OUTPUT); + pinMode(ledBarF, OUTPUT); + pinMode(ledBarG, OUTPUT); + pinMode(ledBarH, OUTPUT); + pinMode(ledBarI, OUTPUT); + pinMode(bell, OUTPUT); + pinMode(pushButt, INPUT); + attachInterrupt(0, defusing, CHANGE); +} + +void thisIsTheEnd() { + + i = 2000; + while (i >= 400) { + if (zor) { + k=i/2; + s = i - 50; + digitalWrite(mainLed, HIGH); + digitalWrite(bell, HIGH); + delay(50); + digitalWrite(bell, LOW); + delay(s); + digitalWrite(mainLed, LOW); + delay(k); + i -= k; + } + else { + goto lastStraw; + } + } + while (i >= 20) { + if (zor) { + digitalWrite(mainLed, HIGH); + digitalWrite(bell, HIGH); + delay(i); + digitalWrite(mainLed, LOW); + digitalWrite(bell, LOW); + delay(i); + i -= 10; + } + else { + goto lastStraw; + } + } + i = 2000; + // Chenillard final + lb = 3; + while (lb < 12) { + digitalWrite(lb, HIGH); + delay(400); + lb ++; + } + delay(500); + lb = 3; + while (lb < 12) { + digitalWrite(lb, LOW); + lb ++; + } + lb = 3; + digitalWrite(bell, HIGH); + while (lb < 12) { + digitalWrite(lb, HIGH); + delay(100); + digitalWrite(lb, LOW); + lb ++; + } + lb = 10; + while (lb > 2) { + digitalWrite(lb, HIGH); + delay(100); + digitalWrite(lb, LOW); + lb --; + } + zor = true; + + lastStraw: + digitalWrite(bell, LOW); + +} + +void initConditions() { + delay(300); // interruption debounce, else it'll jump the 'while' + lb = 3; + while ( lb < 12 ) { + digitalWrite(lb, LOW); + lb ++; + } + ctDownSet = 0; + k = 0; + dc = 0; + lastDebounceTime = 0; + modeState = false; +} + +/* ========================================================================== */ +void loop(void) { + clearSelect: + initConditions(); + + while ( modeState == false ) { + if ( ctDownSet < 2700001 ) { + k=ctDownSet/300000 + 2; + digitalWrite(k, HIGH); + + if ( digitalRead(pushButt) == LOW ) { + lastDebounceTime = millis(); + delay(300); // debounce + // check if the switch is pressed for a long time + if( digitalRead(pushButt) == LOW && ( lastDebounceTime - millis() ) > 5000 ) { + modeState = true; + i=0; + while( i<2 ) { + digitalWrite(bell, HIGH); + delay(200); + digitalWrite(bell, LOW); + delay(200); + i++; + } + delay(700); + goto sayByBye; + } + // otherwise (short pressure), just increment the countdown delay + else { + ctDownSet += 300000; + digitalWrite(mainLed, HIGH); + delay(300); + digitalWrite(mainLed, LOW); + } + } + } + else { + goto clearSelect; + } + } + + sayByBye: + zor = true; + if (zor) { + if ( ctDownSet != 0 ) { + k=ctDownSet/300000; + while ( k > 1 ) { + //delay(300000); + dc = 0; + + countDown: + + while ( dc < 300001 ) { + if (zor) { + delay(10); + dc += 10; + } + else { + i = 0; + while ( i < 2 ) { + digitalWrite(mainLed, HIGH); + delay(300); + digitalWrite(mainLed, LOW); + delay(300); + i ++; + } + cd = 0; + while ( cd < 10001 ) { + delay(10); + cd += 10; + } + zor = true; + delay(400); + if (zor) { + i = 0; + while ( i < 2 ) { + digitalWrite(mainLed, HIGH); + delay(300); + digitalWrite(mainLed, LOW); + delay(300); + i ++; + } + goto countDown; + } + else { + goto jackFlash; + } + } + } + digitalWrite(k+2, LOW); + digitalWrite(k+1, HIGH); + k --; + } + + dc = 0; + + takeFive: + + while ( dc < 300001 ) { + if (zor) { + delay(10); + dc += 10; + } + else { + i = 0; + while ( i < 2 ) { + digitalWrite(mainLed, HIGH); + delay(300); + digitalWrite(mainLed, LOW); + delay(300); + i ++; + } + cd = 0; + while ( cd < 10001 ) { + delay(10); + cd += 10; + } + zor = true; + delay(400); + if (zor) { + i = 0; + while ( i < 2 ) { + digitalWrite(mainLed, HIGH); + delay(300); + digitalWrite(mainLed, LOW); + delay(300); + i ++; + } + goto takeFive; + } + else { + goto jackFlash; + } + } + } + digitalWrite(3, LOW); + } + } + + jackFlash: + + if (zor) { + thisIsTheEnd(); + if ( zor == false ) { + k = 11; + while ( k > 2 ) { + digitalWrite(k, HIGH); + k --; + } + k = 9; + goto defuseSign; + } + } + + else { + + defuseSign: + lb = k + 2; + while ( lb > 2 ) { + digitalWrite(bell, HIGH); + digitalWrite(lb, LOW); + delay(500 - lb*25); + digitalWrite(bell, LOW); + delay(200 - lb*15); + lb --; + } + + } + + return; +} diff --git a/yellow_prints.png b/yellow_prints.png new file mode 100644 index 0000000..b42aec7 Binary files /dev/null and b/yellow_prints.png differ