====== Arduino Setup ====== Things you need: * Arduino * Printer USB cable (Type B) * Arduino Software For linux you can run the software from bash or make a script. It is good to do sudo so you have all permissions for ports * $arduino After running the program, you can make or upload scripts. then comile and load ==== This document ==== many examples in this document show examples of code. Unless in a code box, the examples will start with $ and follow some of hte principals in the [[hstarwiki:linux|linux]] page on this wiki. ==== Coding Notes ==== IDEA!!!!!: Can write examples of if then (etc) operations of what would hapen if, and so on in the comments. * 2015-03-14 Left off at:http://arduino.cc/en/Tutorial/AnalogReadSerial ===== Basic scripts: ====== Minimum for a script: void setup() { } void loop() { } ====== Basic Sytax ====== == No Code == /* you can write notes that will not be part of the scripte with forward slash star then star forward slash to end */ * %%//%% You can also do just forward slash, forward slash space for a single line End of line * Use semicolen at the end of each line, ex: * $pinMode(13, OUTPUT); == Pins: == Unless othersiwse stated, pins are just indicated by numbers such as this indicated pin 13 on the actual board: * pinMode(13, OUTPUT); == Other: == * $delay([milliseconds]); * This sets a delay ====== Advanced Syntax ====== == Cast == Cast is a way of converting one type of data, to another type, * such as float to int * $([type])[var] * type is things like float or int * var is any variable or constant * Example (to change a float brightness to a int brightness float bright = sensorValue * (255.0 / 1023.0); int bint; // a way to define an int name, but give no value float bflo; // define float name, but give no value bflo = bright; // sets what value the float is bint = (int)bflo; // this is the cast directive analogWrite(led, bint); // for this example, it would cast the light as an int through a pwm pin and allow it to be an integer between 0-255 ====== Script setup: ====== Before setup you can define things such as int ==== void setup ==== More:http://arduino.cc/en/Reference/Setup. "The setup() function is called when a sketch starts. Use it to initialize variables, pin modes, start using libraries, etc. The setup function will only run once, after each powerup or reset of the Arduino board. " ==== Within the void setup brackets {} ==== ==== Numbers and more ==== == int == * $int [var] = [x]: * This will define an integer with * [var] * name of integer * x * Any 16 bit number which is between -32,768 and 32,768. * If larger see: * http://arduino.cc/en/Reference/Int * Can also make x a sensor value or other things. ex: * int sensorvalue = analogRead(A0); == float == * float [var] = [val]; * [var] * name of float * [val] * 32bit number meant for decimal point value == long == * long [var] = [val][L] * for ding larger numbers that are 32bit but integers. * If doing math with integers, need to have L at end of number * ex: * long speedOfLight - 186000L ==== Before operators ==== const * $const [type] [name] = [var] * A constant will not change, so you can not use operations to change the int or float unsigned * $unsigned [type] [name] = [var] * Unsigned will use the bit available per type in only positive. * for example for int, it will used:0 to 65,535 * instead of -32,768 and 32,768 ====== Modes ====== * $pinMode([pin], [configuration]); * http://arduino.cc/en/Tutorial/DigitalPins * [pin] an be a number, or if defined int earlier, that int definition * [configuration] * INPUT * Requires very little impedence to take an input * OUTPUT * Send 40mA of curent * Note: it is a good idea to connect OUTPUT pins to other devices with 470Ω or 1k resistors, unless maximum current draw from the pins is required for a particular application. " * INPUT_PULLUP * This needs more explanation but basically changes the ohm resistance for better? or Varied? inputs * $digitalWrite([pin], [value]) * [pin] * number of pin, or constant * [value] * HIGH * sends 5V (3.3V on 3.3V Boards) * Low * sends 0V read * $digitalRead([pin]) * will read whatever value is active on [pin], often set is INPUT * may need to read analog * $analogRead([pin]) * Will give an analog read between 0-1023 (10bit) if else if ([if formula]) { // then do this } else { // then do this } * Do not need else forumla as it will follow after if * can do: else if ([if then formula) { // Then do this } * and chain together other paremiters, but be sure to end with basic else * Do not need else, but watch out ====== Operators ====== * x == y (x is equal to y) !!! important to use 2 equals * x != y (x is not equal to y) * x < y (x is less than y) * x > y (x is greater than y) * x <= y (x is less than or equal to y) * x >= y (x is greater than or equal to y) * [equation] || [equation] (|| equals OR) * ! (equals NOT) * && (equals AND) ====== Serial ====== * http://arduino.cc/en/Reference/Serial * Some pins are auto serial (kinda like the auto 5V or GND) * But you can define a pin with: * $Serial.[options]([var]); * [options] * .begin * Will beging sending output via the serial port at whatever baud rate. ex: * $Serial.begin(9600) * Note: This only initializes the serial communication so you most likely want to put it in the setup area. * .println * This will send the serial the variablable. Such as: * Serial.println([varialbe]) * Note: the variable here is not a pin, it needs to be something like an actual number, letter (ASCII) or an int defined somewhere else. * .print("[text]") * in this option, it will print text within the parenthesis * [baud] * The baud rate of the signal. Usually 9600 ====== Readouts ====== * $millis() * will return the ammount of millisconds since the prgrams has started ====== Glossery: ====== * PWM = Pulse width modulation. Basically an analog modulation variable that sends an analog signal * It can set the modulation at 8bit or 0-255. ex: * analogWrite(127) which is about half. ====== last code ======