Program
Project #6: MicroView – Mk01
DonLuc1804Mk03b.ino
// ***** Don Luc ***** // Software Version Information // 1.01 // DonLuc1804Mk03 1.01 // MicroView #include <MicroView.h> void loop() { uView.setFontType(0); uView.setCursor(0,20); uView.print(" Don Luc "); uView.display(); delay(5000); uView.clear(PAGE); uView.setFontType(1); uView.setCursor(0,20); uView.print("Don Luc"); uView.display(); delay(5000); uView.clear(PAGE); }
setup.ino
void setup() { uView.begin(); // begin of MicroView uView.clear(ALL); // erase hardware memory inside the OLED controller uView.display(); // display the content in the buffer memory, by default it is the MicroView logo delay(1000); uView.clear(PAGE); // erase the memory buffer, when next uView.display() is called, the OLED will be cleared. }
MicroView
Project #6 – Mk01
Don Luc
Project #5: Lamps – Mk01
DonLuc1804Mk02.ino
// ***** Don Luc ***** // Software Version Information // 1.01 // DonLuc1804Mk02 1.01 // Lamps #include <Adafruit_NeoPixel.h> // Which pin on the Arduino is connected to the NeoPixels // Pin connected => 6 #define PIN 6 // How many NeoPixels are attached to the Arduino // NUMPIXELS => 4 #define NUMPIXELS 4 Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); // Panel Mount 1K potentiometer Bright // Bright => A0 const int sensorBright = A0; int sBright = 0; int brightVal = 0; // the sensor value int brightMin = 0; // minimum sensor value int brightMax = 0; // maximum sensor value // Panel Mount 1K potentiometer // Delay => A1 const int sensorDelay = A1; long delayVal = 0; // Rotary Switch - 10 Position // Number => A2 (0 => 9) const int sensorNumber = A2; // Panel Mount 1K potentiometer // Red - Led const int sensorRed = 9; int red = 0; int redMin = 0; int redMax = 0; // Panel Mount 1K potentiometer // Green - Led const int sensorGreen = 8; int green = 0; int greenMin = 0; int greenMax = 0; // Panel Mount 1K potentiometer // Blue - Led const int sensorBlue = 7; int blue = 0; int blueMin = 0; int blueMax = 0; // variables: //int x = 0; int y = 0; int z = 0; void loop() { number(); }
bright.ino
void bright(){ switch (sBright) { case 1: brightVal = 255; break; default: // read the sensor: brightVal = analogRead(sensorBright); // apply the calibration to the sensor reading brightVal = map(brightVal, brightMin, brightMax, 0, 255); // in case the sensor value is outside the range seen during calibration brightVal = constrain(brightVal, 0, 255); break; } }
iled.ino
void iled() { // red red = analogRead(sensorRed); // apply the calibration to the sensor reading red red = map(red, redMin, redMax, 0, 255); // in case the sensor value is outside the range seen during calibration red = constrain(red, 0, 255); // green green = analogRead(sensorGreen); // apply the calibration to the sensor reading red green = map(green, greenMin, greenMax, 0, 255); // in case the sensor value is outside the range seen during calibration green = constrain(green, 0, 255); // blue blue = analogRead(sensorBlue); // apply the calibration to the sensor reading red blue = map(blue, blueMin, blueMax, 0, 255); // in case the sensor value is outside the range seen during calibration blue = constrain(blue, 0, 255); }
neopix.ino
void neopix() { for(int i=0; i<NUMPIXELS; i++){ // bright bright(); pixels.setBrightness( brightVal ); // pixels.Color takes RGB values, from 0,0,0 up to 255,255,255 pixels.setPixelColor(i, pixels.Color(red,green,blue)); // show pixels.show(); // This sends the updated pixel color to the hardware. // delay delay(50); // Delay for a period of time (in milliseconds). } }
neopixt.ino
void neopixt() { for(int i=4; i<NUMPIXELS; i--){ // bright bright(); pixels.setBrightness( brightVal ); // pixels.Color takes RGB values, from 0,0,0 up to 255,255,255 pixels.setPixelColor(i, pixels.Color(red,green,blue)); // show pixels.show(); // This sends the updated pixel color to the hardware. // delay delay(50); // Delay for a period of time (in milliseconds). } }
number.ino
void number(){ z = analogRead(sensorNumber); y = (z / 127); sBright = 20000; // range value: switch (y) { case 0: // Led iled(); // neopix neopix(); // delay delayVal = (0); break; case 1: // Led iled(); // neopix neopix(); // delay sdelay(); break; case 2: // Led iled(); // neopixt neopixt(); // delay sdelay(); break; case 3: // White red = 255; green = 255; blue = 255; // neopix neopix(); // delay delayVal = (0); break; case 4: // Green red = 0; green = 255; blue = 0; // neopix neopix(); // delay delayVal = (0); break; case 5: // Red red = 255; green = 0; blue = 0; // neopix neopix(); // delay delayVal = (0); break; case 6: // White red = 255; green = 255; blue = 255; // neopix neopix(); // delay sdelay(); break; case 7: // Green red = 0; green = 255; blue = 0; // neopix neopix(); // delay sdelay(); break; case 8: // Red red = 255; green = 0; blue = 0; // neopix neopix(); // delay sdelay(); break; case 9: break; } }
sdelay.ino
void sdelay() { delayVal = analogRead(sensorDelay); delayVal = (250 * delayVal); }
setup.ino
void setup() { pixels.begin(); // This initializes the NeoPixel library. }
Don Luc
Programming: Tri-Axis Gyro – L3G4200D – Parts
1 x Breadboard
1 X Arduino UNO
1 X SparkFun Tri-Axis Gyro Breakout – L3G4200D
5 X Jumper Wires Premium 3″ M/M
Don Luc
Programming: Tri-Axis Gyro – L3G4200D – Arduino
DonLuc1802Mk03.ino
// ***** Don Luc ***** // Software Version Information // DonLuc1802Mk03 1.0 #include <Wire.h> #define CTRL_REG1 0x20 #define CTRL_REG2 0x21 #define CTRL_REG3 0x22 #define CTRL_REG4 0x23 #define CTRL_REG5 0x24 int L3G4200D_Address = 105; //I2C address of the L3G4200D int x; int y; int z; void setup(){ Wire.begin(); Serial.begin(9600); Serial.println("starting up L3G4200D"); setupL3G4200D(2000); // Configure L3G4200 - 250, 500 or 2000 deg/sec delay(1500); //wait for the sensor to be ready } void loop(){ getGyroValues(); // This will update x, y, and z with new values Serial.print("X:"); Serial.print(x); Serial.print(" Y:"); Serial.print(y); Serial.print(" Z:"); Serial.println(z); delay(100); //Just here to slow down the serial to make it more readable } void getGyroValues(){ byte xMSB = readRegister(L3G4200D_Address, 0x29); byte xLSB = readRegister(L3G4200D_Address, 0x28); x = ((xMSB << 8) | xLSB); byte yMSB = readRegister(L3G4200D_Address, 0x2B); byte yLSB = readRegister(L3G4200D_Address, 0x2A); y = ((yMSB << 8) | yLSB); byte zMSB = readRegister(L3G4200D_Address, 0x2D); byte zLSB = readRegister(L3G4200D_Address, 0x2C); z = ((zMSB << 8) | zLSB); } int setupL3G4200D(int scale){ // Enable x, y, z and turn off power down: writeRegister(L3G4200D_Address, CTRL_REG1, 0b00001111); // If you'd like to adjust/use the HPF, you can edit the line below to configure CTRL_REG2: writeRegister(L3G4200D_Address, CTRL_REG2, 0b00000000); // Configure CTRL_REG3 to generate data ready interrupt on INT2 // No interrupts used on INT1, if you'd like to configure INT1 // or INT2 otherwise, consult the datasheet: writeRegister(L3G4200D_Address, CTRL_REG3, 0b00001000); // CTRL_REG4 controls the full-scale range, among other things: if(scale == 250){ writeRegister(L3G4200D_Address, CTRL_REG4, 0b00000000); }else if(scale == 500){ writeRegister(L3G4200D_Address, CTRL_REG4, 0b00010000); }else{ writeRegister(L3G4200D_Address, CTRL_REG4, 0b00110000); } // CTRL_REG5 controls high-pass filtering of outputs, use it // if you'd like: writeRegister(L3G4200D_Address, CTRL_REG5, 0b00000000); } void writeRegister(int deviceAddress, byte address, byte val) { Wire.beginTransmission(deviceAddress); // start transmission to device Wire.write(address); // send register address Wire.write(val); // send value to write Wire.endTransmission(); // end transmission } int readRegister(int deviceAddress, byte address){ int v; Wire.beginTransmission(deviceAddress); Wire.write(address); // register to read Wire.endTransmission(); Wire.requestFrom(deviceAddress, 1); // read a byte while(!Wire.available()) { // waiting } v = Wire.read(); return v; }
Don Luc