Assignment: Measure something: add a sensor to a microcontroller board that you have designed and read it.
As I'm only able to program via Arduino IDE, the PCB I will use is a Satshakit. Here is the Satshakit documentation, and here is the Satshakit GitHub page.
| Here is the board view
                         | And here is the PNG file used
                         | 
| Using the FabModule to generate the Gcode
                         | And a Roland monoFab SRM-20, to mill the PCB
                         | 
| Now it is time to solder the components
                         | Here is my Soldering Lab at home
                         | 
| And the PCB finished
                         | 
| First a tried to burn the boatloader to my Satshakitusing USBasp key (a key I bought)
                         | But I got an error, no chance to make it works
                         | 
| So I decided to use an Arduino Uno as ISPloading ArduinoISP to Arduino Uno
                         | Configuring the Programmer correctly to "Arduino as ISP"
                         | 
| Here is the pinout Schema to use Arduino Uno as a ISP Programmer
                         | This time Burn Bootloader was a success
                         | 
I use a ultra sound sensor as Input Device, the aim is to be able to define a distance in a box, as I could do in my new final project (to check if there is some seeds in the tank of my birdhouse)
| 
                        Here is my program
                        The aim is to get as an output the distance mesured by the sensor
                         | 
                        Serial Plotter view
                         | 
| 
                        Serial Monitor view
                         | 
                        Wire connections
                        Arduino Uno is only use as a Programmer
                         | 
In order to improve my knowledge in input devices, I decided to redo the Niel's switch board. All outputs files and programs are above in the summary table at the top of the page.
| Here is the Neil's original board
                         | Using the FabModule to generate the Gcode.See the related .png and .rml files in the ouputs at the top of the page.
                         | 
| Here is my board
                         | Programming the board with my FabISP
                         | 
| Learning how to use Software Serial, in order to get an output in the Arduino IDE Serial Monitor via the FTDI cableSee the program ATtiny45_speaking_to_serial_via_software_Serial in the ouputs at the top of the page
                         | Learning about pull-down resistor ... (resistor external to the microcontroler, to be put on PCB)
                         | 
| ... and about pull-up resistors (resistor internal to the microcontroler, that we can enable on the button Input PIN by programming)
                         | Trying to push state of the button pin to Serial, using pull-up resistorUsing commands "pinMode(pinButton, INPUT_PULLUP);"and command "val=digitalRead(pinButton);"But it is not working, even using old style (2 lines style) for pinMode or using analogRead or disabling pull_up resistorOutput is not relevant, I got it changing, but not going to 0 when pressing the button, looks like I'm not reading the good info from attiny, and I'm not sure pull-up is correctly enabled.See the program Switch_as_input_to_serial_NOT_WORKING in the ouputs at the top of the page.
                         | 
| Push state of the button pin to Serial with successNow using the "avr/io.h" library, cbi and sbi definitions,using cbi and sbi to configure input pin with pull-up resistor (DDRB and PORTB register bits of PB4),and reading the PINB register bit of PB4 to get the relevant info.See the program Switch_as_input_to_serial_WORKING in the ouputs at the top of the page.
                         | Learning how to configure Pin in the Attiny datasheet page 54,this page explains that each port pin consists of three register bits: DDxn, PORTxn, and PINxn
                         | 
| And in the Attiny datasheet page 64,is described the register bits PORTB, DDRB (that I used in my program to configure pin) and PINB (that I used in my program to read pin)
                         | 
Output on Serial Monitor is 1 when button not pushed(because pull_up resistor is enabled), and 0 when button is pushed