Heat-Seeking Desk Fan (met behulp van de Arduino) (5 / 7 stap)

Stap 5: De Code

Samenvatting: Uren van hard werk en frustratie gecondenseerd tot een enkel tekstbestand. Dit is de laatste (meestal) werkt schets, geschreven specifiek met een Arduino Uno in het achterhoofd.

servoSweep() bepaalt de scan en data-opslag
tempRead() bevat alle de i2c onzin en haalt de gegevens uit de temperatuursensor
findHot() keert terug van de servo naar de positie met de heetste temperatuur

Dit is mijn eerste poging om de codering van de Arduino, dus als ik heb dingen flagrant gecompliceerd of onhandig, voel je vrij om te laten me weten. De eerste iteratie werkt groot, maar na dat de Servo en i2cmaster bibliotheken conflict en de servo gaat een kleine noten. Als iedereen het oplost, contact met mij en ik zal het bijwerken van de code.

** TrackFan ** / /
Code en concept van ePums
de code van de tempRead door Dave Eaton en 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
};
dubbele tempVals [12];
int hotPos;

ongeldig tempRead() {}

Functie voor het lezen van de temperatuur van de IR-Sensor definiëren.
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(); Lezen van 1 byte en vervolgens verzenden ack
data_high = i2c_readAck(); Lezen van 1 byte en vervolgens verzenden ack
PEC = i2c_readNak();
i2c_stop();

Zo converteert u hoge en lage bytes samen en temperatuur verwerkt, MSB is een beetje fout en wordt genegeerd voor temps
dubbele tempFactor = 0,02; 0,02 graden per LSB
dubbele tempData = 0x0000;
int de frac;

Vervolgens wordt deze maskers uit de bits van de fout van de hoge byte, verplaatst het 8 bits links en voegt de lage byte.
tempData = (Tweepersoons) (((data_high & 0x007F) << 8) + data_low);
tempData = (tempData * tempFactor)-0.01;
tempData = tempData - 273.15;

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

ongeldig servoSweep() {}
Serial.println ("servoSweep initialiseren!");
j = 0;
POS = 0;
Reset pos en temp indices
delay(500);
Serial.println("positions:");
servo eerste positie herstellen
voor (pos = 0; pos < 130; pos += 10)
{
mrservo.write(POS);
bewegen servo 10 graden
delay(200);
toestaan van de sensor te regelen
tempRead();
Serial.println(POS);
lezen en temp gegevensopslag
delay(300);
}
}

ongeldig findHot() {}
Serial.println ("findHot begonnen!");
vinden van de hoogste temperatuur, servo naar overeenkomstige positie verplaatsen
int i = 0;
lokale zoekindex
int q = 0;
dubbele hotTemp = tempVals [0];
de positiegegevens die is gekoppeld aan de hoogste temperatuur in een bepaalde sweep
voor (ik = 0; ik < 13; ik += 1) {}
Als (tempVals [i] > = hotTemp) {}
hotTemp = tempVals [i];
Serial.Print ("#" + String(i) + "hot Temp:");
Serial.println(hotTemp);
delay(50);
q = i;
index voor hoogste temp waarde in tempVals matrix ophalen
}
}
hotPos = posVals [q];
Serial.println ("hotPos:");
Serial.Print(hotPos);

de overeenkomstige waarde van pos uit posVals index ophalen
Als (mrservo.attached()) {}
Serial.println ("Dit is het lezen output right now");
}
delay(1000);
mrservo.Detach();
mrservo.attach(3);
mrservo.write(hotPos);
delay(1000);
verplaatsen van de servo
Serial.println ("terugkerende te hotPos");


** VERTRAGING TUSSEN SCANS ** / / /
delay(10000);

Ik = 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!");
voor (int n = 0; n < 13; n += 1) {}
Serial.println(tempVals[n]);
delay(50);
}
findHot();

mrservo.Detach();
delay(2000);
}

Gerelateerde Artikelen

DIY | Ambilight met behulp van de Arduino Nano

DIY | Ambilight met behulp van de Arduino Nano

In dit Instructable zal ik onderwijzen u hoe kunt u uw eigen (b) ambilight voor onder $40!Houd in gedachten dat de Ambilight werkt alleen op een PC met de Bambilight software.U moet de volgende onderdelen:Individueel adresseerbare RGB LED-strip - bes
Programmeren van uw chipkit dp32 met behulp van de Arduino IDE

Programmeren van uw chipkit dp32 met behulp van de Arduino IDE

chipKIT platen hebben meestal veel meer geheugen en rekenkracht dan vele Arduino boards Arduino boards, en dientengevolge, ze zijn zo veel beter in het manipuleren van gegevens.Aan de andere kant is de Arduino IDE gemakkelijk te gebruiken en te begri
ESP8266 ESP-12E NodeMCU met behulp van de Arduino IDE - een Tutorial programmering

ESP8266 ESP-12E NodeMCU met behulp van de Arduino IDE - een Tutorial programmering

NodeMCU Dev Board is gebaseerd op grote schaal onderzocht esp8266 systeem op Spaander van Expressif. Het gecombineerde functies van WIFI accesspoint en station + microcontroller en gebruikt eenvoudige LUA gebaseerde programmeertaal. ESP8266 NodeMCU a
MIDI-handschoen met behulp van de Arduino en lichtsensoren drummen

MIDI-handschoen met behulp van de Arduino en lichtsensoren drummen

ik zal beschrijven een leuke en gemakkelijke manier om uw eigen geluid expressie opbouwt MIDI ingeschakeld handschoen gebruikten veel van geld op MIDI Interfaces of dure sensoren zonder.Voel je vrij om contact met mij direct per mail als u suggesties
ESP8266 controle WS2812 Neopixel LEDs met behulp van de Arduino IDE - A Tutorial

ESP8266 controle WS2812 Neopixel LEDs met behulp van de Arduino IDE - A Tutorial

Hallo iedereen,Als u als me bent, hebt u zoekend rond het internet een goede tutorial over het gebruik van de ESP8266 met neopixel LEDs (AKA de WS2812 of WS2812b), geprogrammeerd via de Arduino IDE. Ik heb niet gevonden het allen in één plaats, in he
Steampunk ESP8266 Internet verbonden klok met behulp van de Arduino IDE

Steampunk ESP8266 Internet verbonden klok met behulp van de Arduino IDE

Wat u krijgt wanneer een ring NeoPixel, een goedkope Arduino Wifi aan boord en een laser cutter in een stoom-Punk-Sedan lopen?Een modieuze Steampunk ontworpen Internet verbonden klok met behulp van de ESP8266 chip en de Arduino IDE natuurlijk!Hier is
Remote controlled webcam met behulp van de Arduino, SensorMonkey, jQuery en Justin.tv

Remote controlled webcam met behulp van de Arduino, SensorMonkey, jQuery en Justin.tv

Web in te schakelen voor uw interactieve sensoren over desktop, smartphone en tablet apparaten.Deze tutorial beschrijft in detail hoe met de gratis SensorMonkey -service op afstand besturen van een pan en tilt webcam aangesloten op een Arduino met ni
RFIDuino - met behulp van een Arduino & RFID-lezer te maken van een puzzel GeoCache

RFIDuino - met behulp van een Arduino & RFID-lezer te maken van een puzzel GeoCache

ik geniet van zowel Geocaching en elektronica en heb een paar van elektronische puzzel caches met behulp van een Arduino.Mijn nieuwste creatie (met de hulp van een collega cacher voor de code) is met behulp van een Arduino en RFID lezer te maken van
Hoe maak je een enkele LED knipperen met behulp van een Arduino Uno Board

Hoe maak je een enkele LED knipperen met behulp van een Arduino Uno Board

Vandaag, we zullen worden ter illustratie van hoe maak je een enkele LED knipperen met behulp van een Arduino Uno-board. Door elke stap te volgen, zal je dit doel bereiken.U zal het volgende nodig:Een Arduino BoardBrood bordUSB-connectorkabelEEN LED3
LED controle met behulp van de Arduino Bluetooth en Android. (Deel 1)

LED controle met behulp van de Arduino Bluetooth en Android. (Deel 1)

Dit instructable is een eenvoudige tutorial uitleggen hoe de controle van één LED met Android's Bluetooth.U moet:Arduino UNOWeerstanden 300Ω (3 x)Weerstand 150ΩLEDJumpers;Bluetooth-Module (HC-06/andere);Android telefoon;SPP Bluetooth Apk (unWired Lit
Mening gecontroleerde licht met behulp van de Arduino || Arme man EEG sensor

Mening gecontroleerde licht met behulp van de Arduino || Arme man EEG sensor

Het zou niet geweldig om te schakelen dingen in- of uitschakelen met je geest... !!!Zoals de Puzlebox baan Mobile Edition (http://www.amazon.com/Puzzlebox-Puzlebox-Orbit-Mob... ) of de coole Star Wars Science - Force Trainer ( http://www.amazon.com/S
Het maken van uw eigen candy grabber machine met behulp van de Arduino & 1Sheeld

Het maken van uw eigen candy grabber machine met behulp van de Arduino & 1Sheeld

Eenvoudig, dit project is een candy grabber machine gecontroleerd met behulp van de Arduino en 1Sheeld via Game pad Shield.1Sheeld is een platform voor Arduino waarmee u om te onttrekken in de sensoren en de mogelijkheden van uw smartphone en u kunt
Met behulp van een Arduino te beheersen of te testen een SPI elektronisch apparaat

Met behulp van een Arduino te beheersen of te testen een SPI elektronisch apparaat

er zijn veel elektronische apparaten die gebruikmaken van de SPI bus, of Serial Peripheral Interface bus, voor communicatie (bijvoorbeeld verschillende sensoren, LCD displays, digitale potentiometers, D/A en A/D converters, draadloze zenders en ontva
2-wiel Self Balancing Robot met behulp van de Arduino en MPU6050

2-wiel Self Balancing Robot met behulp van de Arduino en MPU6050

2-wiel Self Balancing Robot met behulp van de Arduino en MPU6050.Arduino als de controller en de sensor MPU6050 gebruiken om te bepalen van het evenwicht. Gewoon een eenvoudige seriële Bluetooth module toevoegen en een Bluetooth seriële Controller AP