Wednesday, July 31, 2013

Notes from the Arduino SparkFun Inventor's Kit - Sketch 01 to Sketch 05

Arduino programs are called Sketches, which are uploaded to the board. They are written in Processing, which is a subset of C++.

Exercise: Sketch 01
Learning points:
Each Arduino board must have 2 functions - setup() and loop().
void setup() initializes the Arduino board. It only runs once.
void loop() is the function that runs continuously.

Functions:
pinMode(pin_number, mode)
  e.g. pinMode(13, OUTPUT);
digitalWrite(pin_number, mode)
  e.g. digitalWrite(13, HIGH)
delay(time)
  e.g. delay(1000) // delay 1000 msecs

Exercise: Sketch 02
Learning points:
An Arduino can accept analog and digital inputs. We are using a variable resistor in this circuit.

Functions:
analogRead(pin_number)
  e.g. sensorValue = analogRead(sensorPin)

Exercise: Sketch 03
Learning points:
Putting "const" is like "final static" in Java.
The white LED has 3 pins for RGB, ranging from 0 to 767.

Functions:
for (x = 0; x < 768, x++)
{
  function_A();
}

analogWrite(pin_number, int value)
  e.g. analogWrite( RED_PIN, redIntensity)

Example: Sketch 04
Learning points:
Arrays in Processing
  int ledPins[] = {2, 3, 4, 5, 6, 7, 8, 9};

Functions:
random(limit_value);
e.g. int index = random(8); // picks a number randomly from 0 to 7

Exercise: Sketch 05
Learning points:
Boolean logic using digital pins for input
Connect the pin of the pushbutton to GND and the other pin to a digital pin. Use a 10K resistor in between the pin of the pushbutton and the digital pin so that when the pushbutton is not pressed, the pin will read as "HIGH".

Functions:
A == B
A != B
A && B
A || B
!A

Exercise: Sketch 06
Learning points:
Using photoresistors

Functions:
map(initial lower bound, initial upper bound, ideal lower bound, ideal upper bound);
e.g. map(0, 1023, 0 , 255) // map values from 0 to 1023 to 0 to 255
constrain(range of values, lower bound, upper bound); 
e.g. constrain(lightLevel, 0, 255)


Exercise: Sketch 07
Learning points:
Using temperature sensors
Do not connect the temperature sensor in the opposite direction (Vin to the GND pin of the temperature sensor)! The sensor heated up till over 260 degrees and I got burnt. Ouch..
Serial transmission

Functions:
Serial.being(baud rate)
e.g. Serial.begin(9600) 
Serial.print(string or variable) 

Exercise: Sketch 08
Learning points:
Using servos
Importing libraries

Functions:
#import <>
servo1.attach(pin);

Exercise: Sketch 09
Learning points:
Using the flex sensor

Functions:
flexposition = analogRead(filexpin);


The Gap - What haunts me daily

The gap between what I could be and what I am currently haunts me daily, incessantly, relentlessly.

Monday, July 29, 2013

Starting Arduino with Ubuntu 12.04

Bought an Arduino Starter Kit 2 days ago and started with the tutorials.

Note when starting Arduino on Ubuntu: If you are using Ubuntu 12.04, you do need to add Arduino as a user and restart in order to access the serial port.

It's fun to make LEDs light up =)

Hardware Product Design - FreeCAD

I used SolidWorks during my engineering days, but now that I no longer have access to SolidWorks, I had to find an alternative CAD software. Hopefully, something that runs on Windows and Ubuntu.

Just started using FreeCAD, which is not as user-friendly as SolidWorks, but I'm not complaining.

Coming from someone who has used SolidWorks before, I think the easiest method to get started was to watch the video tutorials on FreeCAD.

I started with a new document, under the "Part" mode (not "Part Design").

I found the menu a bit confusing. You have to choose the mode that you are in to access the tools.

For navigation, I selected the "Blender" navigation mode.

For rotation of objects and parts, I used "Edit -> Placement" and selected either Yaw, Pitch and Roll (google for the relevant axis of rotation).

I haven't tried "Assembly", which is similar to "Mate" in Solidworks, where you can align 2 parts to each other using either faces, edges or points.