Skocz do zawartości

startrek1p2p

Użytkownicy
  • Zawartość

    26
  • Rejestracja

  • Ostatnio

Reputacja

4 Neutralna

O startrek1p2p

  • Ranga
    3/10
  1. @RFM akurat w symulatorze jest tylko 5v i krótki pakiet, a zasilacz sam sie ustawia na 6 v W rzeczywistości mam na 12v taśmę 5m WS2811 z tego co wiem potrzebuje do 70w zasilacza. Ale godzin mi o to czy na samo din mogę mieć 5v i będę mógł nimii sterować @Gieneq Czyli tak jak powyżej powinno zadziałać ?
  2. Takie szybkie pytano, czy jak podłącze w taki sposób taśmę led ws2811-12V z Arduino to będę mógł nią sterować ? czy spale może Arduino ?
  3. Sprawdź czy czasami Atmega nie jest lekko krzywa albo wyciągnięta. Ja też raz tak miałem, wystarczyło docisnąć do podstawki i działało
  4. @RFM Sory, że dopiero teraz, ale jakoś twój komentarz mi umkną. nie od razu Kraków zbudowano. Zabawę z Arduino nie zaczyna się od przygotowania całego laboratorium, bo główną zaletą tej całej platformy jest niewielkie potrzebne zaplecze do startu, i na tym bazuje. wtedy jeszcze myślałem, że wartość RGB będzie zawsze taki sam dla każdego koloru i czujnika tego typu. @marek1707 Dzięki, Twoja odpowiedz idealnie uzmysłowiła mi co mam teraz zrobić i tutaj posprawdzam co sie stanie, już mam pomysł jak to zrobić. Za kilka dni dam znać
  5. @Elvis dzięki. Dam później znać co wyszło
  6. Coś pokombinuje i zobaczę co z tego wyjdzie. Najgorsze jest to, że ta odległość zawsze musi być taka sama, więc jeszcze do tego muszę zrobić obudowę która będzie dotykała bezpośrednio przedmiot i dopiero mogę coś robić z kolorem. Czyli z tymi kolorami to mam szukać maksymalnej i minimalnej wartości Która ogólnie mi się pojawi w otoczeniu(np biały kolor na szafce) ? Czy tylko na konkretnym głównym kolorze (kartki R G B z oświetleniem i bez) ?
  7. No to na razie sie pobawię z samymi karteczkami i kolorami, zobaczymy co sie uda to jednak trochę zajmie. Początkowy projekt jest jednak trochę po za moimi granicami, przynajmniej na razie
  8. @RFM niestety nie mam oscyloskopy i żadnego znajomego który by go posiadał. Zamieniłem z int na byte wiec tutaj już powinno byc lepiej, int frequency = 0; byte R = 0; byte G = 0; byte B = 0; na razie wartość frequency zostawiłem aby zobaczyć co dalej będzie wychodzić Wartości pulseIn : @Elvis zmieniłem ale nie do końca wiem czego mam sie spodziewać w sensie jakich wartości. To, że sie zmieniają to widać. Oznaczyłem kolorami przedmioty o tych samych kolorach do czujnikach. posprawdzałem wszytko i widzę, że tutaj odległość 3/5 mm wpływa diametralnie na cały odczyt. wiec nawet jak ustawie pod kątem to wynik jest zafałszowany. i już mniej więcej mogę utalic ale tylko pod konkretny kolor ( czerwony, zielony, niebieski) ale juz ma problem przy innych kolorach oraz innych odcieniach
  9. Hej, napotkałem na problem przy czujniku koloru. Ten czujnik został podłączony jak w różnych poradnikach, ale dalej pokazywał dziwne wartości. Chciałem aby odczytywał kolory RGB w skali 0-255 i następnie żeby ten wynik wyświetlał na diodzie WS2812. Niestety ten czujnik wyświetla dziwne wyniki " R= -1350 G= -1615 B= -1887 " Gdzie tutaj leży błąd ? Kod już próbowałem zmieniać kilkukrotnie i nigdy nie otrzymywałem prawdziwego wyniku. Może czujnik jest zepsuty? Czy może jeszcze coś innego? Włączałem i wyłączałem podświetlenie, też to nic nie daje. Obecny kod został praktycznie skopiowany i wklejony z tej strony i dodana tylko linijka WS2812 abym na bieżąco widział, jaki jest kolor. #define S0 4 #define S1 5 #define S2 6 #define S3 7 #define sensorOut 8 #include <Adafruit_NeoPixel.h> int frequency = 0; int R = 0; int G = 0; int B = 0; Adafruit_NeoPixel linijka = Adafruit_NeoPixel(8, A0, NEO_GRB + NEO_KHZ800); void setup() { pinMode(S0, OUTPUT); pinMode(S1, OUTPUT); pinMode(S2, OUTPUT); pinMode(S3, OUTPUT); pinMode(2, OUTPUT); pinMode(sensorOut, INPUT); // Setting frequency-scaling to 20% digitalWrite(S0,HIGH); digitalWrite(S1,LOW); digitalWrite(2, HIGH); Serial.begin(9600); linijka.begin(); //Inicjalizacja linijka.show(); } void loop() { // Setting red filtered photodiodes to be read digitalWrite(S2,LOW); digitalWrite(S3,LOW); // Reading the output frequency frequency = pulseIn(sensorOut, LOW); //Remaping the value of the frequency to the RGB Model of 0 to 255 frequency = map(frequency, 25,72,255,0); // Printing the value on the serial monitor Serial.print("R= ");//printing name Serial.print(frequency);//printing RED color frequency Serial.print(" "); R = frequency; delay(100); // Setting Green filtered photodiodes to be read digitalWrite(S2,HIGH); digitalWrite(S3,HIGH); // Reading the output frequency frequency = pulseIn(sensorOut, LOW); //Remaping the value of the frequency to the RGB Model of 0 to 255 frequency = map(frequency, 30,90,255,0); // Printing the value on the serial monitor Serial.print("G= ");//printing name Serial.print(frequency);//printing RED color frequency Serial.print(" "); G = frequency; delay(100); // Setting Blue filtered photodiodes to be read digitalWrite(S2,LOW); digitalWrite(S3,HIGH); // Reading the output frequency frequency = pulseIn(sensorOut, LOW); //Remaping the value of the frequency to the RGB Model of 0 to 255 frequency = map(frequency, 25,70,255,0); // Printing the value on the serial monitor Serial.print("B= ");//printing name Serial.print(frequency);//printing RED color frequency Serial.println(" "); B = frequency; delay(100); linijka.setPixelColor(5, linijka.Color(R, G, B)); linijka.show(); delay(500); Serial.print(" "); Serial.print(R); Serial.print(" "); Serial.print(G); Serial.print(" "); Serial.println(B); }
  10. To magnesy wszystkie neodymowe ustawiane na samych kontaktronach, ale w wysokości około 5mm od nich bo zamaskowałem same kontaktrony (wtedy dopiero działają, bo na tym jest jeszcze kilka warstw plastku) próbowałem różnych wpierw kwadratowych 4x4x1 później okrągłych 10x2 oraz 10x4. @marek1707 To w takim razie mam dodać przy przekaźniku diodę świecąca ? Czy coś innego ? Aby to jak najbardziej zniwelowac
  11. Tak, nawet myślałem, że coś z nimi jest nie tak i założyłem kolejne 4 nowe kontaktrony. Problem jest dalej taki sam, wiec chyba to nie w tym problem.
  12. Mam pewien problem ze swoim projektem. Niby bardzo prosty (tak mi się wydawało), a jednak coś nie działa, a na pewno nie w taki sposób, jak bym ja chciał. Otóż całość jest zbudowana z 4 kontaktronów oraz przekaźnika. Po zetknięciu magnesów neodymowych ze wszystkimi kontaktronami dopiero powinien zadziałać przekaźnik. Taki jest cel całego projektu, ale tak nie jest... Potrzebne jest zatknięcie pierwszego i ostatniego kontaktronu i wtedy działa albo 1; 2 i 4 jakby te dwa środkowe kontaktrony były cały czas zwarte chociaż wszystkie są od siebie oddalone o około 20 cm wiec na pewno magnesy ich nie zwierają. Kontaktrony nie powinny "sklejać styków" bo gdzieś wyczytałem, że powinny działać do prądu max 0,1A, a po sprawdzeniu w katalogu albo zmierzeniu przekaźnika(dokładnie nie pamiętam) wyszło, że pobiera on tylko 35mA, wiec nie powinno być żadnego problemu, jednak takowy się pojawia. Już nie wiem co mam zrobić.
  13. Jak dla mnie płytka idealna na warsztaty, pokazy, uczelnie itp. w końcu nie trzeba się będzie bawić w różne dodatkowe płytki, tylko wszystko w jednej. Kluczową sprawą jest cena. Czy się będzie opłacało kupić jedną płytkę czy taniej będzie kupić wiele dodatkowych i je łączyć aby uzyskać taki sam efekt.
  14. Dzięki, wcześniej miałem na INPUT_PULLUP i działało najlepiej z wypróbowanych (to już n'ta wersja) jak będę miał trochę więcej czasu to coś porobię i dam znać o efektach. A studiujemy kierunek techniczno informatyczny czyli wszystkiego po trochu(elektronika, mechanika, informatyka)
  15. Cześć, napotkałem na problem, który próbowałem rozwiązać z dwoma kolegami (studentami), ale się nie udało. Otóż chciałem stworzyć program w którym trzeba w odpowiedniej kolejności włączyć bezpieczniki (działają jak przełączniki kołyskowe) a następnie świeci się dioda . Problem następuje w tym, że arduino odczytuje je tak jakby były cały czas włączane i pomimo wprowadzenia złej kolejności program tyle razy w sekundzie sprawdza je, że w końcu dochodzi do dobrej kombinacji. Wiem, że część z kombinacją jest dobra, bo działa ale na przyciskach wyciskowych. I tutaj prawdopodobnie jest mój błąd, czyli w samej deklaracji czy to ma być "INPUT" bądź "INPUT_PULLUP" (te dwa sprawdzałem) czy jeszcze jakaś inna? Po przemyśleniach doszedłem do wniosku, że to trzeba przerobić tak, aby działał na zmianę stanu z niskiego na wysoki bądź odwrotnie, ale też nie mam pojęcia jak tego dokonać. ' int code=0; int flag=4; void setup() { Serial.begin(9600); pinMode(A1, INPUT); //Przycisk 1 pinMode(A2, INPUT); pinMode(A3, INPUT); pinMode(A4, INPUT); pinMode(A5, INPUT); pinMode(A6, INPUT); pinMode(5, OUTPUT); pinMode(7, OUTPUT); //Wyjście diody 1.1 pinMode(8, OUTPUT);// wyjscie diody 1.2 pinMode(9, OUTPUT); pinMode(10, OUTPUT); pinMode(11, OUTPUT); pinMode(12, OUTPUT); digitalWrite(5, HIGH); } void loop() { /////DIODY if (digitalRead(A1) == HIGH) { //Jeśli przycisk jest wciśnięty digitalWrite(7, HIGH); //Włączenie diody 1.1 digitalWrite(8, LOW); //Wyłączenie diody 1.2 } else { //Jeśli przycisk nie jest wciśnięty digitalWrite(8, HIGH); //Włączenie diody 1.2 digitalWrite(7, LOW); //Wyłączenie diody 1.1 } if (digitalRead(A2) == HIGH) { //Jeśli przycisk jest wciśnięty digitalWrite(9, HIGH); //Włączenie diody 2.1 digitalWrite(10, LOW); //Wyłączenie diody 2.2 } else { //Jeśli przycisk nie jest wciśnięty digitalWrite(10, HIGH); //Włączenie diody 2.2 digitalWrite(9, LOW); //Wyłączenie diody 2.1 } if (digitalRead(A3) == HIGH) { //Jeśli przycisk jest wciśnięty digitalWrite(11, HIGH); //Włączenie diody 3.1 digitalWrite(12, LOW); //Wyłączenie diody 3.2 } else { //Jeśli przycisk nie jest wciśnięty digitalWrite(12, HIGH); //Włączenie diody 3.2 digitalWrite(11, LOW); //Wyłączenie diody 3.1 } ///////////////////////////// PRZYCISKI if ((digitalRead(A1) == HIGH)&&(flag!=0)) { //Jeśli przycisk jest wciśnięty Serial.println(code); flag = 0; coder(); } if ((digitalRead(A2) == HIGH)&&(flag!=1)) { //Jeśli przycisk jest wciśnięty Serial.println(code); flag = 1; coder(); } if ((digitalRead(A3) == HIGH)&&(flag!=2)) { //Jeśli przycisk jest wciśnięty Serial.println(code); flag = 2; coder(); } } //////////////////// KOLEJNOSC void coder(){ switch(flag){ case 0: if(code==0){ code++; } else{ code=0; } break; case 1: if(code==1){ code++; } else{ code=0; } break; case 2: if(code==2){ code++; } else{ code=0; } break; } Serial.println(code); if(code==3){ flag=4; code=0; digitalWrite(5, LOW); delay(1000); digitalWrite(5, HIGH); } }
×
×
  • Utwórz nowe...