Värmesökande skrivbord fläkt (med Arduino) (5 / 7 steg)

Steg 5: Koden

Sammanfattning: Timmar av hårt arbete och frustration kondenseras till en enda textfil. Detta är den sista (mestadels) arbetar skiss, speciellt med en Arduino Uno i åtanke.

servoSweep() styr den scan och datalagring
tempRead() omfattar alla i2c dumheter och hämtar de data från temperaturgivare
findHot() returnerar servo till position med den hetaste temperaturen

Detta är mitt första försök på kodning Arduino, så om jag har gjort saker egregiously alltför komplicerad eller klumpig, Känn dig fri att låta mig veta. Den första iterationen fungerar bra, men efter det Servo och i2cmaster bibliotek konflikten och servo går en lite nötter. Om någon löser det, kontakta mig och jag ska uppdatera koden.

** TrackFan ** / /
Kod och koncept av ePums
tempRead koden av Dave Eaton och SensorJunkie

#include < Servo.h >
#include < i2cmaster.h >

Servo mrservo;

int j = 0;
int pos;
int posVals [] = {
0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120
};
dubbel tempVals [12].
int hotPos;

void tempRead() {

Definiera funktion för att läsa temperaturen från IR-sensorn.
int dev = 0x5A << 1;
int data_low = 0;
int data_high = 0;
int pec = 0;
i2c_start_wait(dev+I2C_WRITE);
i2c_write(0x07);

i2c_rep_start(dev+I2C_READ);
data_low = i2c_readAck(); Läst 1 byte och sedan skicka ack
data_high = i2c_readAck(); Läst 1 byte och sedan skicka ack
PEC = i2c_readNak();
i2c_stop();

Detta konverterar höga och låga byte tillsammans och processer temperatur, MSB är lite fel och ignoreras för temps
Double tempFactor = 0,02; 0,02 grader per LSB
Double tempData = 0x0000;
int frac;

Denna masker av fel lite i den höga byten, flyttar sedan lämnade 8 bitar och lägger till den låga byten.
tempData = (dubbelrum) (((data_high & 0x007F) << 8) + data_low);
tempData = (tempData * tempFactor)-0.01;
tempData = tempData - 273.15;

tempVals [j] = tempData;
j + = 1;
}

void servoSweep() {
Serial.println ("servoSweep initiera!");
j = 0;
POS = 0;
återställa pos och temp-index
Delay(500);
Serial.println("positions:");
återgå servo till första position
för (pos = 0; pos < 130; pos + = 10)
{
mrservo.write(POS);
flytta servo 10 grader
Delay(200);
låta sensorn att bosätta sig
tempRead();
Serial.println(POS);
läsa och lagra temporära data
Delay(300);
}
}

void findHot() {
Serial.println ("findHot startat!");
hitta högsta temperatur, flytta servo till motsvarande position
int jag = 0;
lokala sökindexet
int q = 0;
Double hotTemp = tempVals [0];
den positionsdata som associeras med den högsta temperaturen i en given sopa
för (jag = 0; jag < 13; jag + = 1) {
om (tempVals [i] > = hotTemp) {
hotTemp = tempVals [i];
Serial.Print ("#" + String(i) + "hot Temp:");
Serial.println(hotTemp);
Delay(50);
q = i.
Hämta index för högsta temp värde i tempVals matris
}
}
hotPos = posVals [q];
Serial.println ("hotPos:");
Serial.Print(hotPos);

Hämta motsvarande pos värdet från posVals index
om (mrservo.attached()) {
Serial.println ("detta läser utdata just nu");
}
Delay(1000);
mrservo.detach();
mrservo.attach(3);
mrservo.write(hotPos);
Delay(1000);
flytta servo
Serial.println ("återvänder till hotPos");

** FÖRDRÖJNING MELLAN SKANNINGAR ** / / /
Delay(10000);

Jag = 0;
}

void setup() {
Serial.BEGIN(9600);
i2c_init();
PORTC = (1 << PORTC4) | (1 << PORTC5);
}

void loop() {
mrservo.attach(3);
Delay(1000);
mrservo.write(0);
i2c_init();
servoSweep();
Serial.println("temperatures!");
för (int n = 0; n < 13; + n = 1) {
Serial.println(tempVals[n]);
Delay(50);
}
findHot();

mrservo.detach();
Delay(2000);
}

Se Steg
Relaterade Ämnen

Trafiksignal / bromsljus ledningar med Arduino Controller

jag alltid velat ha en gammal trafiksignal och slutligen fick en nyligen. Det var dock mycket enkelt fast så att alla lampor var fast på. Vad kul är det? Jag ville prova en Arduino styrenhet och trodde detta skulle vara ett trevligt enkelt projekt at...

En 15-LED RGB klocka med Arduino kärna

RGB klockan använder RGB sammansättning-färgmodellen används i alla färgskärmar. Denna modell använder tre "grundläggande" färger, nämligen röda, gröna och blå, för att bygga någon annan "sammansatta" färg av spektrumet. Med RGB klocka...

LED paraply med Arduino

The LED paraply med Arduino kombinerar ett paraply, en 8 x 10 ledde matrisen och en mikrokontroller Arduino att skapa en kontrollerbar, programmerbara ledde upplevelse i avskildhet i ditt eget paraply. Detta projekt var inspirerad av den elektriska p...

PIR rörelsedetektor med Arduino: Drivs på lägsta energiläge som konsumtion

Denna video visar snabbt och lätt strategi för att minska energiförbrukningen för ATMEGA 328P baserade Arduino styrelser med cirka 70-75% med PIR eller PID sensorer för rörelsedetektering.Detta projekt införs efter saker-1) gränssnitt Pyroelectric/Pa...

Bänk PSU strömförsörjning från gamla ATX med Arduino och LCD-skärm

Hej alla och Välkommen till min första Instructable.Jag har alltid velat en bänk PSU för enkel åtkomst till en strömkälla, och något som jag kan lita på när du arbetar med olika projekt. Jag ville ha ett NÄTAGG som:• ger 12v och 5v 3.3V utgångar• ger...

Billiga hinder sensor - med Arduino!

När jag började med arduino och elektronik, jag alltid velat göra saker på billigt sätt.Ingenting har förändrats.Steg 1: delar Behöver du:-Infraröd LED-Infraröd fotodiod-Arduino-Tråd av något slag-Eltejp, silvertejp, även Varmlimma!-Värme Krymp-Kansk...

Med Minimus AVR med Arduino IDE

The Minimus AVR är en USB-ansluten mikrokontroller, som använder ATMEL 90USB192 mikrokontroller. Dess en billig åter programmerbara mikrokontroller med 21 digital input/output stift.De har använts av människor som mod spelkonsoler konsoler, för att l...

Skicka och ta emot MIDI med Arduino

Detta instructable visar dig hur du använder en Arduino att skicka och ta emot en mängd olika MIDI-meddelanden så att du kan börja bygga din egen MIDI-controllers och instrument. Första jag ska prata lite om MIDI-protokollet, om du bara letar exempel...

Hur man gör en LED 7-segment display med Arduino

Jag ska visa dig hur man gör ett 7 segment visas med lysdioder. Kombinera med Arduino att skapa nedräkningen timers, enkel text och mycket mer. Jag gillar att göra ursprungliga projekt. Jag sökte hela instructables och hitta inte en så här. I själva...

Flera fermenteren temperaturkontroll med Arduino

Temperaturkontroll anses ofta vara en av de topp fem stegen mot brygga bättre öl. (http://beerandwinejournal.com/10-better-1/) Det finns många metoder för att hålla jäsande vört vid optimala temperaturer från inslagning en damejeanne i en filt att hå...

Fjärrstyrda webkamera med Arduino, SensorMonkey, jQuery och Justin.tv

webb-aktivera din interaktiva sensorer över skrivbordet, smartphone och tablet enheter.Denna handledning beskriver i detalj hur du använder tjänsten gratis SensorMonkey till styra en pan och tilt webbkamera ansluten till en Arduino använder inget ann...

Borstlösa Gimbal med Arduino

Detta är ett våren 2014 elektronik projekt på Pomona College skapad av Andreas Biekert och Jonah Grubb. Tack till Professor Dwight Whitaker, Tony Grigsby och Pomona Fysikum.Vårt mål med detta projekt var att skapa en 2 axis borstlös gimbal styrs enba...

Hur man gör en mobiltelefon och dator kontrolleras 3D tryckta Robot med Arduino - IoBot.

Om du letar efter ett sätt att kontrollera en Arduino baserade enheter, kommer att denna anvisning Visa dig hur man gör det genom att bygga enkla robot.IoBot kan styras med mobil och dator ansökan via LAN eller USB-kabel. Programmet körs på Android,...

Hur man gör ett larmsystem med Arduino

Med Arduino är verkligen möjligt att göra komplexa projekt, särskilt genom användning av Internet, kan du genom de olika Shield tillgänglig för mikro-controller. I denna artikel kommer vi se hur man gör en professionell larmsystem med Arduino.Detta s...

Hur man har kul med Arduino (och bli en nörd i processen)

vill du tjäna din geek-kort - pronto? Låter komma igång! Denna guide börjar du på sökvägen till den mörka sidan med hjälp av öppen källkod Arduino utveckling och prototyping plattformen. Det kommer att introducera dig till mikrokontroller, komma igån...

Återställa batterier med Arduino

har du uppladdningsbara batterier som inte är avgiftsbelagda längre? Det finns många möjliga orsaker till varför ett batteri slutar att ta en avgift, här är några av vanligaste. Det kan ha skadats av värme på grund av överladdning eller sulfater kan...

LED Cube med Arduino och anpassade PCB

detta instructable Detaljer design och byggprocessen för en 5 x 5 x 5 LED cube, kontrolleras med en Arduino, som befinner sig på ett tryckt kretskort.Ytterligare information, foton och video finns på min hemsida.Den färdiga produkten visas i videon n...

Gör en mini leksaksbil med Arduino

Varje pojke har drömmen om att göra en bil. Dagar sedan jag gjorde en aldrig falla skalbagge, det är mycket roligt och så många människor sade liknande det. Här det kommer att göra en annan leksaksbil, vilket är mycket mindre och det är programmerbar...

PHloat2 DIY surt vatten testning skulptur & kit med arduino

pHloatpHloat är en DIY kit som är gjorda för att användas tillsammans med en pre-ägda / befintliga arduino mikrokontroller. Dess syfte är att testa pH-nivåer i lokala floder, sjöar och vattendrag på grund av inflödet av luft- och vattenföroreningar s...