Den som flaskan pekar på...

Starta med en svepande hand över panelen (Atlantis-stil)

och flaskan börjar snurra.

Denna kan hälpa dig att rita en

flaska för att ersätta pilen.

#include <LedControl.h>

/*

Experiment med HC-SR04 och Uno R3

Snurra flaska..

HC-SR04

VCC till arduino 5v

GND till arduino GND

Echo till Arduino 9

Trig till Arduino pin 10

En Aktiv ton summer på 85 dB 5V.

Montera summer melllan lång pinne (plus) på pinne 11

och kort pinne på GND

8x8 LED display

För att driva den med en Arduino UNO behöver du

library 'LedControl' finns att ladda ner här:

http://playground.arduino.cc/Main/LedControl#Source

Koppla 5V till VCC på LED

Koppla GND till GND på LED

Koppla 7 till DIN på LED

Koppla 6 till CLK på LED

Koppla 5 till CS på LED

*/

//#define Debug

#define TriggerPinne 10

#define EchoPinne 9

int pinneSummer = 11;

long Distans;

boolean AvstandOK = false;

#define Av 0

#define Snurrar 1

int FlaskaStatus = Av;

int Steg = 10;

int PekarPa = 1;

int SnurrFordrojning = 100;

byte Arrow1[8] = {B00011000, B00111100, B01011010, B00011000, B00011000, B00011000, B00011000, B00011000};

byte Arrow2[8] = {B00011111, B00000111, B00001111, B00011101, B00111001, B01110000, B11100000, B11000000};

byte Arrow3[8] = {B00000000, B00000100, B00000010, B11111111, B11111111, B00000010, B00000100, B00000000};

byte Arrow4[8] = {B11000000, B11100000, B01110000, B00111001, B00011101, B00001111, B00000111, B00011111};

byte Arrow5[8] = {B00011000, B00011000, B00011000, B00011000, B00011000, B01011010, B00111100, B00011000};

byte Arrow6[8] = {B00000011, B00000111, B00001110, B10011100, B10111000, B11110000, B11100000, B11111000};

byte Arrow7[8] = {B00000000, B00100000, B01000000, B11111111, B11111111, B01000000, B00100000, B00000000};

byte Arrow8[8] = {B11111000, B11100000, B11110000, B10111000, B10011100, B00001110, B00000111, B00000011};

LedControl lc=LedControl(7,6,5,1);

void setup() {

#ifdef Debug

Serial.begin(9600);

#endif

pinMode(pinneSummer, OUTPUT);

pinMode(TriggerPinne, OUTPUT);

digitalWrite(TriggerPinne, LOW);

pinMode(EchoPinne, INPUT);

KollaDistans();

randomSeed(Distans);

lc.shutdown(0,false);

lc.setIntensity(0,1);

lc.clearDisplay(0);

}

void loop() {

if(FlaskaStatus == Av ){

KollaDistans();

if(Distans < 20 && AvstandOK){

FlaskaStatus = Snurrar;

SnurrFordrojning = 50;

Steg = random(30, 50);

}

}

if(FlaskaStatus == Snurrar){

pipKort();

switch (PekarPa) {

case 1:

TandLeds(Arrow1);

break;

case 2:

TandLeds(Arrow2);

break;

case 3:

TandLeds(Arrow3);

break;

case 4:

TandLeds(Arrow4);

break;

case 5:

TandLeds(Arrow5);

break;

case 6:

TandLeds(Arrow6);

break;

case 7:

TandLeds(Arrow7);

break;

case 8:

TandLeds(Arrow8);

break;

}

PekarPa = PekarPa + 1;

if(PekarPa == 9){

PekarPa = 1;

}

Steg = Steg -1;

if(Steg < 1){

FlaskaStatus = Av;

delay(2000);

pipKort();

}

delay(SnurrFordrojning);

SnurrFordrojning = SnurrFordrojning + 10;

}

}

void TandLeds(byte Num[8]){

for (int i = 0; i <= 7; i = i + 1) {

byte row = Num[i];

lc.setRow(0,i,row);

}

}

void KollaDistans(){

long varaktighet;

delay(100); //vänta på gamla ekon ska dö ut.

digitalWrite(TriggerPinne, HIGH);

delayMicroseconds(10);

digitalWrite(TriggerPinne, LOW);

varaktighet = pulseIn(EchoPinne, HIGH);

Distans = varaktighet/59;

AvstandOK = true;

if (Distans >= 200 || Distans <= 0){

AvstandOK = false;

}

#ifdef Debug

Serial.println(distance);

#endif

}

//Piper en kort.

void pipKort(){

digitalWrite(pinneSummer, HIGH);

delay(10);

digitalWrite(pinneSummer, LOW);

}