This example illustrates how to store values read from analog input 0 into the EEPROM using the EEPROM.write() function. These values will stay in the EEPROM when the board is turned off and may be retrieved later by another sketch.
Step 1: What You Need?
1 x Arduino Board ( Arduino UNO used in this tutorial)
Don't have components? Don't worry. Just click the component's name.
Step 2: Build Your Circuit.
Step 3: Upload The Code.
1. Select the Arduino board type: Select Tools >> Board >> Select your correct Arduino board used.
2. Find the port number by accessing device manager on Windows. See the section Port (COM&LPT) and look for an open port named "Arduino Uno (COMxx)". If you are using a different board, you will find a name accordingly. What matters is the xx in COMxx part. In my case, it's COM3. So my port number is 3.
Select the right port: Tools >> Port >> Select the port number.
3. You can find this code in the example of Arduino IDE.
Select File >> Examples >> EEPROM >> eeprom_write
Click press the "upload" button (see the button with right arrow mark).
/* * EEPROM Write
*
* Stores values read from analog input 0 into the EEPROM.
* These values will stay in the EEPROM when the board is
* turned off and may be retrieved later by another sketch.
*/ #include <EEPROM.h> /** the current address in the EEPROM (i.e. which byte we're going to write to next) **/
int addr = 0; void setup() {
/** Empty setup. **/
} void loop() {
/***
Need to divide by 4 because analog inputs range from
0 to 1023 and each byte of the EEPROM can only hold a
value from 0 to 255.
***/ int val = analogRead(0) / 4; /***
Write the value to the appropriate byte of the EEPROM.
these values will remain there when the board is
turned off.
***/ EEPROM.write(addr, val); /***
Advance to the next address, when at the end restart at the beginning. Larger AVR processors have larger EEPROM sizes, E.g:
- Arduno Duemilanove: 512b EEPROM storage.
- Arduino Uno: 1kb EEPROM storage.
- Arduino Mega: 4kb EEPROM storage. Rather than hard-coding the length, you should use the pre-provided length function.
This will make your code portable to all AVR processors.
***/
addr = addr + 1;
if (addr == EEPROM.length()) {
addr = 0;
} /***
As the EEPROM sizes are powers of two, wrapping (preventing overflow) of an
EEPROM address is also doable by a bitwise and of the length - 1. ++addr &= EEPROM.length() - 1;
***/ delay(100);
}
0 comments:
Post a Comment