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
This commit is contained in:
299
unabkraft.ino
Normal file
299
unabkraft.ino
Normal file
@@ -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;
|
||||
}
|
||||
Reference in New Issue
Block a user