Create a Line Tracing Robot using DE0. This board is programmed with VHDL via Altera Quartus.
Eight IR sensors are used.
![](https://private-user-images.githubusercontent.com/129606995/351302487-5b3b396f-27b3-4f20-a66a-27d4bb848a1d.jpg?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkyNzI5MDIsIm5iZiI6MTczOTI3MjYwMiwicGF0aCI6Ii8xMjk2MDY5OTUvMzUxMzAyNDg3LTViM2IzOTZmLTI3YjMtNGYyMC1hNjZhLTI3ZDRiYjg0OGExZC5qcGc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjUwMjExJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI1MDIxMVQxMTE2NDJaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT0zMjBmYWFjOTY4OWM5YjFlNmNlNzhhYjljMGY5NzZiZGJmNGJmY2IxZjExN2UxNzkzZDI0ZGI3ZmMwNzhjMWMyJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.pmtM-xuLW79wYHj33ERNHR2y0Of9vK7V-padHE7UbR4)
![](https://private-user-images.githubusercontent.com/129606995/351304418-f354e9c3-ee57-4b1e-a8a0-4d04c138cded.jpg?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkyNzI5MDIsIm5iZiI6MTczOTI3MjYwMiwicGF0aCI6Ii8xMjk2MDY5OTUvMzUxMzA0NDE4LWYzNTRlOWMzLWVlNTctNGIxZS1hOGEwLTRkMDRjMTM4Y2RlZC5qcGc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjUwMjExJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI1MDIxMVQxMTE2NDJaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT1kOTliNmEyMGM1NDE2YWZjYWE2NWE1M2JiMTZlMzQxYTQxMTQ3NjlmYjYyMGI4MDA1N2FhODE5YmIwOGU1MGEyJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.nCpBJgJCf8Rn5WgBHTI1VaRv77xhZIFHCKVxcEW1dc0)
![](https://private-user-images.githubusercontent.com/129606995/351305165-4e629009-070c-42c5-8def-4a762d3aeac6.jpg?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkyNzI5MDIsIm5iZiI6MTczOTI3MjYwMiwicGF0aCI6Ii8xMjk2MDY5OTUvMzUxMzA1MTY1LTRlNjI5MDA5LTA3MGMtNDJjNS04ZGVmLTRhNzYyZDNhZWFjNi5qcGc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjUwMjExJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI1MDIxMVQxMTE2NDJaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT0zZDA5ZjVmNDUzMjNlNWVlNjhiODY4NzU3MGIwNTU3M2Q1Zjk2YzA4MzZhZmM3NzNmMWYzOWIwOGIxNzAwYzkyJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.eGs6SNZw0BbkSgMxLVy-1rnU-EUERZabpsHl2BxIT14)
![](https://private-user-images.githubusercontent.com/129606995/351312039-49dbf4e2-7716-4c15-b20f-5e81e4d763d1.jpg?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkyNzI5MDIsIm5iZiI6MTczOTI3MjYwMiwicGF0aCI6Ii8xMjk2MDY5OTUvMzUxMzEyMDM5LTQ5ZGJmNGUyLTc3MTYtNGMxNS1iMjBmLTVlODFlNGQ3NjNkMS5qcGc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjUwMjExJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI1MDIxMVQxMTE2NDJaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT03MjgyMTcyOTZmZjFkYTgxY2U1M2VkMzFiMjA0ZjNjZTZiZjQzMzNhYjFiMWMzZDAxMWNmZmNjZmNiNGY4NWUxJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.RBlPUcQwma9TSmN_QfEQtSo8tICUeuZvNubW3ch2xEk)
![](https://private-user-images.githubusercontent.com/129606995/351305551-821e720c-3278-4f7d-956b-a18b1c638d04.jpg?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkyNzI5MDIsIm5iZiI6MTczOTI3MjYwMiwicGF0aCI6Ii8xMjk2MDY5OTUvMzUxMzA1NTUxLTgyMWU3MjBjLTMyNzgtNGY3ZC05NTZiLWExOGIxYzYzOGQwNC5qcGc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjUwMjExJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI1MDIxMVQxMTE2NDJaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT0yZDQyYTlmZTg0M2NlYWVjZDRjYTNjMTQ3NTRmMGFmOWM2ZWE0ZjQ3YjU3MzQ1OTk5NGY4N2U3MjgyM2U3MzhkJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.UhXMnMG9W9s011R_In-7DLzOuf_Q0DDI_-hgjo4ZHbo)
![](https://private-user-images.githubusercontent.com/129606995/351306817-040c2eff-592b-4dab-9916-e12e889f3952.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkyNzI5MDIsIm5iZiI6MTczOTI3MjYwMiwicGF0aCI6Ii8xMjk2MDY5OTUvMzUxMzA2ODE3LTA0MGMyZWZmLTU5MmItNGRhYi05OTE2LWUxMmU4ODlmMzk1Mi5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjUwMjExJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI1MDIxMVQxMTE2NDJaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT1iYTYzODgzODZiZjBlY2RlZTg0OThiYzk1NDkxZmM0NGJhMDkzNDUyNjM5ZmE1YWE3ZWI2MmQ2MmE0OGJlZmViJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.nao-xty8O42Rkaka2JSSgZExqePIpI1Rm_toOFhuE2E)
Since the hardware does not have capacitor connected to IR Recieving Sensor, it is very vulnerable to noise. To be specific, when the robot approaches a horizontal line, the sensor value stutters causing the program to incorrectly count the amount of times where robot passed a horizontal line.
To avoid this, a rejection code was added.
In addition, to reduce noise that can cause robot to decide wrong rotation control, the robot decides IR Detection with the following instruction;
By Calculating the amount of sensors detected for each group(shown with the boxes) and applying a threshold, the machine can decide where the line is located more safely. This calculation is done in parallel.