• If you are citizen of an European Union member nation, you may not use this service unless you are at least 16 years old.

View

# Angeles Cesar Lab4

last edited by 6 years ago

## Part A.  Writing to the Serial Monitor

a. Based on the readings from the serial monitor, what is the range of the analog values being read?

I can see values from 0 to 1023.

b. How many bits of resolution does the analog to digital converter (ADC) on the Atmega32U4 have (hint: where might you look to find this sort of thing)? How many are you using with the range of values you're seeing?

10 bits. The 10 bits because 2^10 = 1024 from 0 to 1023

## Part B. Voltage Varying Sensors

a. Describe the voltage change over the sensing range of the sensor. A sketch of voltage vs. distance would work also. Does it match up with what you expect from the datasheet?

Yes, when I put a white sheet near the sensor it outputs values near 0 (2,3) when I move it away, the sensor outputs greater values that grows fast with the change, but after, the values start decreasing but slowly, just as the graph in the datasheet

### 2. Accelerometer

Here is the code in which I add which value corresponds to each axis.

/*

acceleration to the computer.  The pins used are designed to be easily

compatible with the breakout boards from Sparkfun, available from:

The circuit:

analog 0: accelerometer self test

analog 1: z-axis

analog 2: y-axis

analog 3: x-axis

created 2 Jul 2008

by David A. Mellis

modified 4 Sep 2010

by Tom Igoe

This example code is in the public domain.

*/

#include <LiquidCrystal.h>

// initialize the library with the numbers of the interface pins

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

// these constants describe the pins. They won't change:

const int xpin = A3;                  // x-axis of the accelerometer

const int ypin = A2;                  // y-axis

const int zpin = A0;                  // z-axis (only on 3-axis models)

void setup()

{

// initialize the serial communications:

lcd.begin(16, 2);

Serial.begin(9600);

}

void loop()

{

// print the sensor values:

lcd.setCursor(0,0);

lcd.print("x:");

lcd.setCursor(3,0);

// print a tab between values:

lcd.setCursor(7,0);

lcd.print("Y:");

lcd.setCursor(10,0);

// print a tab between values:

lcd.setCursor(6,1);

lcd.print("Z:");

lcd.setCursor(9,1);

Serial.println();

delay(200);

}

When I tilt the accelerometer in the solder pins direction, then the Y axis decreases, and increases in the other side.

When I tilt the accelerometer by the shortest sides, that means in the same line of the shortest sides the X axis decreases and increases.

## Part D. Logging values to the EEPROM and reading them back

a. Turn in a copy of your final state diagram.

### 2. Reading and writing values to the EEPROM

a. How many byte-sized data samples can you store on the Atmega32U4?

1024 bytes

b. How would you get your analog data from the ADC to be byte-sized?

First by scaling them to -128 to 127 and then by casting the data in the program

a. Use the lab camera or your own camera/cell phone to record and upload a short demo video of your logger in action.