Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
#Input Devices
This week, I used an Arduino board to read an analog temperature sensor.
When I have access to a lab, I will make a microcontroller board with a colour sensor as input.
###Page Summary
0. Inputs using Arduino board (no lab access)
1. Probing an input device's analog levels and digital signals
2. Designing a micro-controller board to read input
3. Milling
4. Stuffing and testing
5. Programming
6. Reading the input
7. Design Files
8. Important and Interesting Links
---
0. Inputs using Arduino board (no lab access)
---
I wanted to start with a simple project to get the basics right and understand fundamentals of using inputs with a microcontroller board. Using an Arduino Uno board with it's documentation was very basic. So I did this before designing my own board.
For reference, I used the [Arduino Project 3](https://create.arduino.cc/projecthub/godboi123/love-o-meter-bda552) as it used the temperature sensor.
I started by collecting all the components.

I used this schematic to connect everything.

The circuit setup was fairly easy. This is how it looks.

At first, all lights were continuously on. I checked the serial monitor and saw that the temperature was around 26 degrees without touching. So I adjusted the baseline temperature to 25 in the sketch. After some trial and error, I adjusted the sketch so that on touching it lightly for about 5 seconds, the second led lit up and on holding it tight for some seconds the third led lit up. The serial monitor indicated temperature range from 26-32 degrees.
So an increment of 2-4-6 degrees worked out perfectly.

This is it in action:

The code was fairly simple as well. You can find it here - [Sketch](./images/input/3leds.zip)
Understanding the basics:
```
// defining constants
const int SensorPin = A1; // analog template input from temp sensor
const float BaselineTemp = 25.0; // reference temp defined
// serial port on and setup runs once
void setup(){
Serial.begin(9600); // serial monitor baud rate
for(int pinNumber = 2; pinNumber<5; pinNumber++){ // for all pins 2, 3 and 4 connected to leds
pinMode(pinNumber,OUTPUT); // define them as output
digitalWrite(pinNumber, LOW); // leds off by default
}
}
// loop - read sensor input
void loop(){
int sensorVal = analogRead(SensorPin); // read analog value from temp sensor
// serial monitor output - temperature
float voltage = (sensorVal/1024.0) * 5.0; // calculate voltage from temp sensor value
float temperature = (voltage - .5) * 100; // calculate temperature from voltage
Serial.println(temperature); // print temperatue on serial monitor
// no leds on
if(temperature < BaselineTemp){ // defining relation between input temp and reference
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
}
// 1 led on
else if(temperature >= BaselineTemp+2 && temperature < BaselineTemp+4){
digitalWrite(2, HIGH);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
}
// 2 leds on
else if(temperature >= BaselineTemp+4 && temperature < BaselineTemp+6){
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, LOW);
}
// 3 leds on
else if(temperature >= BaselineTemp+6){
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
}
delay(1); // delay 1/100 sec before starting loop again
}
```
1. Probing an input device's analog levels and digital signals
---
2. Designing a micro-controller board to read input
---
For this I want to try measuring light color using a RGB colour sensor.
[ATtiny412 Datasheet](https://ww1.microchip.com/downloads/en/DeviceDoc/ATtiny212-214-412-414-416-DataSheet-DS40002287A.pdf)
[VEML6040](https://www.vishay.com/docs/84276/veml6040.pdf)
Downloaded the footprint from [Here](https://www.snapeda.com/parts/VEML6040A3OG/Vishay%20Semiconductor%20Opto%20Division/view-part/702426/?company=-&welcome=home)
Installed the symbol and footprint on KiCAD using [this guide](https://www.snapeda.com/about/import/#)
![libraries]()








3. Milling
---
4. Stuffing and testing
---
5. Programming
---
6. Reading the input
---
7. Design Files
---


[Schematic pdf](./images/input/t412+VEML6040-schematic.pdf.zip)
[Schematic file](./images/input/t412+VEML6040rgbsensor.sch.zip)
[traces](./images/input/traces.rml.zip)
[Kicad pcbnew](./images/input/t412+VEML6040rgbsensor.kicad_pcb.zip)
https://en.wikipedia.org/wiki/List_of_sensors
https://hackmd.io/RzTkiKoXTbqeQOn4Nz_zAw?view#INPUTS