Talk:Projekty-2020
Otočné zrkadielko
Čo budem potrebovať?
- 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
Prečo? 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ť.
Ako na to? Všetky súbory nájdete tu: https://drive.google.com/drive/u/0/folders/1XdoHModR5uVDD5H3o1uEbmd_AcxNtlTm
Najprv si komponenty pripojíme k Arduinu.
Ja som začala Touch talčidlami
1/0 pripojíme porty 2,4,6,8 ( žltá farba v Arduine nano strong),
GND pripojíme na GND(čo sú čierne porty v Arduine nano strong)
VCC pripojíme na 5V (červené porty v Arduine nano strong)
Servo SG90 som dala na port 10
Servo FS90R som dala na port 12
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é.
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.
Kód pre otáčanie zrkadielka:
- include <Servo.h>
const int touchPravy = 2;
const int touchLavy = 4;
const int touchHore = 6;
const int touchDole = 8;
int val1 = 0;
int val2 = 0;
int val3 = 0;
int val4 = 0;
int poziciaOtoc = 0;
int sklopNaklonPozicia = 90;
int krpos = 1000;
Servo s2;
Servo s;
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"); } }
}