HowTo simple Arduino project
Simple Arduino sensor & acturator projects
The Arduino is an open hardware mircocontroller platform. A microcontroller can be used has the hart of a device that responds to an event by a certain action. Sensors are used to sense that a certain event or condition has occured. Acturators (including displays) are used to perform the action.
A project starts with the formulation of a short description of what one want to achieve. Questions that need to be answered are
- What do I want to sense?
- What do I want to act or display?
- With state or not? (Time words: after, when, ..)
An example of a stateless device is a light switch to switch a light on/off. An example of a device with a state is a lamp that is triggered by movement: the light goes on when some movement is detected and stays of until for 10 second no movement has been detected.
It is a good idea to draw a State Diagram, starting from the initial state and thinking about all the events/triggers that could happen. For each of this a line is drawn to a state. And then continue on with a state that has not been investigated yet. Whenever a state is reached that is equivalent to an earlier state, one can draw the line to that state.
Sensors can be devided into three types: on-off, analog, and serial
Examples of on-off sensors are:
The Arduino can measure a voltage between 0V and 5V with 1024 levels.
- Potentiometer (to measure a rotary position)
- Temperature sensitive resitor (TMP36, LM35)
- Force sensitive resitor
Simple, but low resolution and/or accuracy.
- DS18B20 temperature sensor (1-Wire)
- DHT-22 humidty and temperature sensor (proprietary)
- TC04 temperature sensor (I²C)
- TMP75 temperature sensor (I²C)
- HMC5883L: 3-axis digital compass (I²C)
- DS3231 Real Time Clock (I²C)
- Ping Ultrasonic Range Finder (proprietary, delay)
Three types: on-off, analog, and serial
- Relay shield
Not really analog: Pulse-width modulation (PWM)
Arduino: 255 levels, 500Hz.
- MAX7219 and MAX7221 (SPI) led drivers (matrix)
- LCD displays (many)
- WS2812 RGB LED strips NeoPixel (LedPet)
Initialization and loop.
- Read sensors
- Make decision (on state)
- Activate acturators
Everything in a single file and libraries.
- Include statements of libraries
- Pin definitions