|
|
(One intermediate revision by the same user not shown) |
Line 1: |
Line 1: |
− | <h1>Otočné zrkadielko</h1>
| |
| | | |
− | <hr /><p>
| |
− | <b>Čo budem potrebovať? </b>
| |
− | * Budem potrebovať nejaké otočné zrkadielko, ktoré si poupravíme z jedného boku
| |
− | * Servo SG90
| |
− | * Servo FS90R
| |
− | * Arduino nano strong
| |
− | * Napájanie, baterky
| |
− | * 4 -krát tlačidlá Touch
| |
− | * prepájacie káble typu M-F
| |
− | * skrutky (šróby) na upevnenie držiaka na servo v základni - 2kusy
| |
− | </p>
| |
− | <hr />
| |
− |
| |
− | <b>Prečo?</b>
| |
− | Vyskúšať vytvoriť si niečo vlastné a oboznámiť sa s Arduinom. Navyše to bude unikát, ktorý v obchode len tak nenájdete. A napríklad pri šminkovaní si zrkadielko nezašpiníte len kvôli natočeniu, len ľahko pomocou tlačidla si ho natočíte ako budete potrebovať.
| |
− | <hr />
| |
− | <b>Ako na to?</b>
| |
− | Všetky súbory nájdete tu:
| |
− | https://drive.google.com/drive/u/0/folders/1XdoHModR5uVDD5H3o1uEbmd_AcxNtlTm
| |
− |
| |
− | Najprv si komponenty pripojíme k Arduinu. <br>
| |
− | Ja som začala Touch talčidlami <br>
| |
− | 1/0 pripojíme porty 2,4,6,8 ( žltá farba v Arduine nano strong), <br>
| |
− | GND pripojíme na GND(čo sú čierne porty v Arduine nano strong) <br>
| |
− | VCC pripojíme na 5V (červené porty v Arduine nano strong) <br><br>
| |
− |
| |
− | Servo SG90 som dala na port 10 <br>
| |
− | Servo FS90R som dala na port 12 <br>
| |
− |
| |
− | 3D talčený model som si stiahla zo stránky :
| |
− | https://www.thingiverse.com/thing:3958326
| |
− | A podľa svojho projektu som po upravila niektoré komponenty (Front cover V1, small gear V1), a držiak z názvom (servo_mount_for_remote_V1) nebudem potrebovať,
| |
− | vymodelujeme si vlastné.
| |
− | <div><ul>
| |
− | <li style="display: inline-block;"> [[File:komponenty.png|1058px|thumb|middle|Komponenty pre 3D tlač]] </li>
| |
− | </ul></div>
| |
− |
| |
− | potom čo si všetko zložíme a po upevňujeme, to bude vyzerať takto:
| |
− |
| |
− | <img src="3D=objekty_na_zrkadlo_tlac/kompo.jpg" width="360" height="480" alt="kompomemty" id="kompomemty">
| |
− |
| |
− | s držiakom na horné servo som improvizovala a zostrojila som ho z konštrukcie fixy, čo som prilepila o platňu taviacou pištoľou a na
| |
− | to som pripevnila servo drátikom. Všetko v základni som musela dobre prichytiť aby mi to nebránilo-spomaľovalo v otáčaní vpravo-vľavo.
| |
− | Video na pozretie neúplného celku: https://drive.google.com/drive/u/0/folders/1xAaZdGraONxEiZWmZgJmQa61WUsUDXxj
| |
− |
| |
− | K finálnemu výsledku pripevníme ešte riadiaci panel a ja som ešte prefarbila na zlato otočnú platňu aj s vyrobeným držiakom z fixy-pera na servo.:
| |
− | https://drive.google.com/drive/folders/1qKMEAsro9kWZGQv2GVC-QDTm8hpamKql
| |
− |
| |
− | Otočné zrkadielko som nastavila v otáčaní vpravo-vľavo na 8-sť otočení, z dôvodu toho aby sa mi veľmi nezamotali káble okolo zrkadielka,
| |
− | ktoré idú k vrchnému servo, ktoré otáča zrkadlo hore-dole.
| |
− |
| |
− | <hr /><b>Kód pre otáčanie zrkadielka:</b><hr />
| |
− | <div><ul>
| |
− |
| |
− | ##include <Servo.h> <br>
| |
− | const int touchPravy = 2; <br>
| |
− | const int touchLavy = 4;<br>
| |
− | const int touchHore = 6;<br>
| |
− | const int touchDole = 8;<br>
| |
− |
| |
− | int val1 = 0;<br>
| |
− | int val2 = 0;<br>
| |
− | int val3 = 0;<br>
| |
− | int val4 = 0;<br>
| |
− | int poziciaOtoc = 0;<br>
| |
− | int sklopNaklonPozicia = 90;<br>
| |
− | int krpos = 1000;<br>
| |
− | Servo s2;<br>
| |
− | Servo s;<br>
| |
− | void setup() {
| |
− | s.attach(10);
| |
− | s2.attach(12);
| |
− | pinMode(touchPravy, INPUT);
| |
− | pinMode(touchLavy, INPUT);
| |
− | pinMode(touchHore, INPUT);
| |
− | pinMode(touchDole, INPUT);
| |
− | s2.write(sklopNaklonPozicia);
| |
− | Serial.begin(9600);
| |
− | Serial.println("start....");
| |
− | delay(1000);
| |
− | }
| |
− | int otocTo(Servo motorcek, int sklopNaklonPozicia, int koniec) {
| |
− | int naopak = 1;
| |
− | if (sklopNaklonPozicia > koniec){
| |
− | naopak = -1;
| |
− | }
| |
− | for (int i = sklopNaklonPozicia; i != koniec; i += naopak ) {
| |
− | motorcek.write(i);
| |
− | Serial.println(i);
| |
− | delay(krpos/5);
| |
− | }
| |
− | return koniec;
| |
− | }
| |
− |
| |
− | void loop() {
| |
− | val1 = digitalRead(touchPravy);
| |
− | val2 = digitalRead(touchLavy);
| |
− | val3 = digitalRead(touchHore);
| |
− | val4 = digitalRead(touchDole);
| |
− | if (val1 == 1) {
| |
− | delay(500);
| |
− | if (poziciaOtoc != 8) {
| |
− | s.write(84);
| |
− | Serial.println(poziciaOtoc);
| |
− | delay(krpos);
| |
− | s.write(90);
| |
− | poziciaOtoc += 1;
| |
− | }
| |
− | else {
| |
− | Serial.println("prvy else..blok..");
| |
− | s.write(90);
| |
− | }
| |
− | }
| |
− | if (val2 == 1) {
| |
− | delay(500);
| |
− | if (poziciaOtoc != -8) {
| |
− | s.write(95);
| |
− | Serial.println(poziciaOtoc);
| |
− | delay(krpos);
| |
− | s.write(90);
| |
− | poziciaOtoc -= 1;
| |
− | } else {
| |
− | Serial.println(poziciaOtoc);
| |
− | Serial.println("zle -10");
| |
− | }
| |
− | }
| |
− | if (val3 == 1) {
| |
− | delay(500);
| |
− | if (sklopNaklonPozicia != 120) {
| |
− | sklopNaklonPozicia = otocTo(s2, sklopNaklonPozicia, sklopNaklonPozicia + 10);
| |
− | Serial.println(sklopNaklonPozicia);
| |
− | delay(krpos / 2);
| |
− | } else {
| |
− | Serial.println(sklopNaklonPozicia);
| |
− | Serial.println("zle 3tlacidlo");
| |
− | }
| |
− | }
| |
− | if (val4 == 1) {
| |
− | delay(500);
| |
− | if (sklopNaklonPozicia != 40) {
| |
− | sklopNaklonPozicia = otocTo(s2, sklopNaklonPozicia, sklopNaklonPozicia - 10) ;
| |
− | Serial.println(sklopNaklonPozicia);
| |
− | delay(krpos / 2);
| |
− | } else {
| |
− | Serial.println(sklopNaklonPozicia);
| |
− | Serial.println("zle 4tlacidlo");
| |
− | }
| |
− | }
| |
− | }
| |
− |
| |
− |
| |
− | </ul></div>
| |