Skocz do zawartości

Celeba

Użytkownicy
  • Zawartość

    10
  • Rejestracja

  • Ostatnio

Reputacja

0 Neutralna

O Celeba

  • Ranga
    2/10
  1. Tak zgadzam się cudów nie ma, ale nie wiem jak wytłumaczyć to, że po podłączeniu pod inny komputer zaczęło działać na moim również, a nic w międzyczasie nie z oprogramowaniem robiłem.
  2. Witam, zrobiłem ramię robota manipulacyjnego sterowane za pomocą potencjometrów z pamięcią. Od razu mówię, że kod nie został napisany przeze mnie, a jedynie dostosowany do własnych potrzeb. Program działa poprawnie, ramieniem można sterować, po wciśnięciu pierwszego przycisku można zapisywać pozycje, klikając drugi guzik - robot zaczyna wykonywać zapisane ruchy. I teraz dwa moje pytania: 1. Jak zrobić, żeby serwa ruszały się wolniej? 2. Jak zrobić, żeby np po przytrzymaniu drugiego przycisku dało się znów dowolnie sterować ramieniem? Aktualnie jest tak, że muszę albo zresetować układ przyciskiem reset na arduino albo wyłączyć zasilanie. //Code written by Ryan Chan; it is pretty inefficient, but gets the job done, I challenge you to make it more efficient! //*IMPORTANT CHANGES IN VERSION 2: LEDs 4 and 5 have been moved to pins 7 and 8 respectively; Buttons 1 and 2 have been moved to pins 12 and 13 respectively. This is to make wiring easier. #include <Servo.h> Servo servo1; //Servos Servo servo2; Servo servo3; Servo servo4; const int LED1 = 0; //LEDs const int LED2 = 1; const int LED3 = 2; const int LED4 = 12; const int LED5 = 13; const int button1 = 4; //Buttons const int button2 = 6; int button1Presses = 0; //Button values boolean button2Pressed = false; const int pot1 = A2; const int pot2 = A3; const int pot3 = A0; const int pot4 = A1; int pot1Val; //Potentimeter values int pot2Val; int pot3Val; int pot4Val; int pot1Angle; int pot2Angle; int pot3Angle; int pot4Angle; int servo1PosSaves[] = {1,1,1,1,1}; //position saves int servo2PosSaves[] = {1,1,1,1,1}; int servo3PosSaves[] = {1,1,1,1,1}; int servo4PosSaves[] = {1,1,1,1,1}; void setup() { servo1.attach(3); // Set up everything and will run once; attach servos and define the pin modes servo2.attach(9); servo3.attach(10); servo4.attach(11); pinMode(LED1, OUTPUT); pinMode(LED2, OUTPUT); pinMode(LED3, OUTPUT); pinMode(LED4, OUTPUT); pinMode(LED5, OUTPUT); pinMode(button1, INPUT_PULLUP); pinMode(button2, INPUT_PULLUP); digitalWrite(LED1, LOW); digitalWrite(LED2, LOW); digitalWrite(LED3, LOW); digitalWrite(LED4, LOW); digitalWrite(LED5, LOW); Serial.begin(9600); } void loop() { // put your main code here, to run repeatedly: pot1Val = analogRead(pot1); // This will read the values from the potentimeters and store it... pot1Angle = map(pot1Val, 0, 1023, 0, 178); // ... and this will map the values from the potentiometers to values the servos can use and store it for later use pot2Val = analogRead(pot2); pot2Angle = map(pot2Val, 0, 1023, 0, 178); pot3Val = analogRead(pot3); pot3Angle = map(pot3Val, 0, 1023, 0, 178); pot4Val = analogRead(pot4); pot4Angle = map(pot4Val, 0, 1023, 0, 178); servo1.write(pot1Angle); // These will make the servos move to the mapped angles servo2.write(pot2Angle); servo3.write(pot3Angle); servo4.write(pot4Angle); if(digitalRead(button1) == LOW){ // This will check how many times button1 is pressed and save the positions to an array depending on how many times it is pressed; switch/case works like a if statement button1Presses++; switch(button1Presses){ case 1: servo1PosSaves[0] = pot1Angle; servo2PosSaves[0] = pot2Angle; servo3PosSaves[0] = pot3Angle; servo4PosSaves[0] = pot4Angle; digitalWrite(LED1, HIGH); Serial.println("Pos 1 Saved"); break; case 2: servo1PosSaves[1] = pot1Angle; servo2PosSaves[1] = pot2Angle; servo3PosSaves[1] = pot3Angle; servo4PosSaves[1] = pot4Angle; digitalWrite(LED2, HIGH); Serial.println("Pos 2 Saved"); break; case 3: servo1PosSaves[2] = pot1Angle; servo2PosSaves[2] = pot2Angle; servo3PosSaves[2] = pot3Angle; servo4PosSaves[2] = pot4Angle; digitalWrite(LED3, HIGH); Serial.println("Pos 3 Saved"); break; case 4: servo1PosSaves[3] = pot1Angle; servo2PosSaves[3] = pot2Angle; servo3PosSaves[3] = pot3Angle; servo4PosSaves[3] = pot4Angle; digitalWrite(LED4, HIGH); Serial.println("Pos 4 Saved"); break; case 5: servo1PosSaves[4] = pot1Angle; servo2PosSaves[4] = pot2Angle; servo3PosSaves[4] = pot3Angle; servo4PosSaves[4] = pot4Angle; digitalWrite(LED5, HIGH); Serial.println("Pos 5 Saved"); break; } } if(digitalRead(button2) == LOW){ // Pretty self-explnatory here button2Pressed = true; } if(button2Pressed){ // if the boolean button2Press is true, then the servos will run though all their saved positions for(int i = 0; i < 5; i++){ servo1.write(servo1PosSaves[i]); servo2.write(servo2PosSaves[i]); servo3.write(servo3PosSaves[i]); servo4.write(servo4PosSaves[i]); Serial.println(" potentimeter Angles: "); Serial.println(servo1PosSaves[i]); Serial.println(servo2PosSaves[i]); Serial.println(servo3PosSaves[i]); Serial.println(servo4PosSaves[i]); delay(1050); } } delay(300); }
  3. Widzę, że wątek ucichł, ale ja nadal walczę. Okazuje się, że gdzieś podczas odinstalowywania programu musiał zostać plik, który powoduje błąd w programie (pewnie źle się napisał), bo jak podłączyłem płytki do innego komputera - działają bez problemu.
  4. To rozumiem, spróbuję, jak wrócę ze szkoły. Z tym mogę mieć problem, bo wiem o co chodzi, ale nigdy tego nie robiłem i się na tym nie Jakoś nie do końca chce mi się wierzyć w to, że mogło się coś uszkodzić, bo naprawdę uważałem na te płytki, ale wszystko się w życiu może zdarzyć, posprawdzam te gniazda. Czemu śmieszne? Coś z nimi nie tak?
  5. Wcześniej to znaczy jakiś tydzień temu, moja płytka (ta z ".cc") działała normalnie, a tej drugiej program nie widział, myślałem, że to wina oprogramowania (bo na kursie arduino było napisane, że jest różnica czy jest ".cc" czy ".org" i odinstalowałem tamten program i zainstalowałem ten z drugiego linku (który i tak przekierował mnie na stronę arduino.cc) i od tej pory nie działa ani jedna, ani druga płytka. Na tym arduino, które wcześniej działało, jako ostatni wgrałem pusty program, bo mnie zaczął denerwować dźwięk czterech kręcących się serwomechanizmów. Dodaję zdjęcia tych płytek, nie bardzo wiem o które elementy chodzi, więc starałem się złapać jak najdokładniej i jak najwięcej. PS przeszło mi przez myśl, że mogły gdzieś zostać jakieś pliki po poprzednim programie i nowy źle się zainstalował, ale odinstalowałem ponownie i usunąłem wszystko co znalazłem zwiazanego z oprogramowaniem arduino. Zostawiłem sobie tylko kopię z pisanymi przeze mnie programami, ale czy może to mieć wpływ?
  6. Tak sprawdzałem na dwóch kablach i jest to samo, kable są sprawne, wcześniej arduino działało. Pobieralem zarówno ze sklepu Microsoft, jak i bezpośrednio instalator ze strony arduino.cc Jak będę w domu to podeślę zdjęcia. Nie, wszystkie inne programy miałem wyłączone, poza tym nie mam programów, które mogłyby korzystać z portu szeregowego (poza arduino)
  7. Po kolejnej próbie reinstalu sterowników i oprogramowania jedna płytka jest widziana przez komputer (w menadżerze urządzeń) jako "arduino uno", a druga jako "urządzenie portu szeregowego" jednak nadal nie ma możliwości wybrania portu COM w programie.
  8. W menadżerze urządzeń widać urządzenia jako "nieznane" Wersja IDE to 1.8.12 (Windows Store 1.8.33.0) - najnowsza tak resetowałem komputer jednak nie przyniosło to żadnych rezultatów
  9. Witam mam problem. Mam dwie płytki arduino uno jedna z ".cc" na odwrocie, druga ".org". Pierwsza działała poprawnie, natomiast drugiej program nie widział. Nie mogłem wybrać portu COM. myślałem, że to wina sterowników, wszedłem na stronę z linku na kursie arduino w którym było napisane, że z tamtej strony mam pobrać odpowiedznie oprogramowanie, ale jak kliknę link do "arduino.org" to i tak mnie przekierowuje do strony ".cc" odinstalowałem swój program, zainstalowałem ponownie z tamtego linku przekierowującego i pojawił się drugi problem. Teraz program nie widzi żadnej z w/w płytek. Obie płytki są oryginalne, potrzebuję pomocy jak najszybciej, bo muszę skończyć projekt do szkoły. Z góry dziękuję za pomoc
×
×
  • Utwórz nowe...