Skocz do zawartości

Pomocna odpowiedź

Napisano

Dzień dobry 

Stworzyłem sobie taki schemat 

20250629_174754.thumb.jpg.c46bf57c758a8355f3e4aaef3ee62a36.jpg

I mam taki problem że w takiej konfiguracji to działa Super wszystko tak jak bym chciał a ma działać tak że jak odbierze sygnał "U" to się ma obrucic o 1/6 pozyci w prawo a jak "D" to o 1/6 pozyci w prawo. Problem się pojawią jak przenoszę to na chip atmegi to odbiera sygnał ale nie kręci serwem a serwo ma zasilanie ale nie ma na sygnałowym nic myślę że to jest od tego zegara albo wewnetrznego albo Cristal 16mhz 

20250629_180212.thumb.png.e5dd4bdcfba649ca59329060936bf29d.png

Nie wiem jak to zmienić ustawienie tego zegara

Podlikuje zaraz kod

@farmaceuta czytaj uważnie.

Serwo jest OK, bo w układzie z Arduino się obraca. Przez serial monitor nic nie sprawdzi, bo ma tylko goły procesor.

14 godzin temu, Marek2115 napisał:

jak przenoszę to na chip atmegi to odbiera sygnał

A skąd to wiesz? Sprawdź najpierw, czy procesor na płytce stykowej działa, uruchamiając na nim np. mruganie diodą.

(edytowany)

No i lepiej podać zdjęcie układu który jest fizycznie zmontowany niż bazgroły. Ciężko tutaj coś wywnioskować, według rysunku masz źle podłączony kwarc z kondensatorami, oraz przy pinie reset rezystor - i tak o za małej wartości, jest zwarty do masy? Postaraj się podać więcej szczegółów, zdjęcia, schemat, program. 

Edytowano przez _LM_
1 godzinę temu, jand napisał:

A skąd to wiesz? Sprawdź najpierw, czy procesor na płytce stykowej działa, uruchamiając na nim np. mruganie diodą.

Sprawdzałem mruga 

A wiem dlatego że jak odbierze sygnał to mruga

Z "schematu" wyczytałem że podłączenie prawie ok, oczywiście rezystor podciągający na pinie Reset powinien być co najmniej 10k Ohm.
Brak dodatkowej stabilizacji kondensatorami przy pinach VCC i AVCC.
Jeżeli używasz MiniCore, to pinout powinien się zgadzać.

Co jest podłączone pod pin 11?
No i przydałby się kod.
Podepnij na próbę LED do pinu dziewiątego, i sprawdź czy podczas próby sterowania mruga.

 

58 minut temu, _LM_ napisał:

jest zwarty do masy?

Reset należy podciągnąć do zasilania, nie do masy!!!!

40 minut temu, Marek2115 napisał:

Sprawdzałem mruga 

A wiem dlatego że jak odbierze sygnał to mruga

To by wskazywało że program się wykonuje. Ale i tak wyślij te rzeczy o których mówimy. 

26 minut temu, KatzePL napisał:

Reset należy podciągnąć do zasilania, nie do masy!!!!

Tak

1 godzinę temu, KatzePL napisał:

Podepnij na próbę LED do pinu dziewiątego, i sprawdź czy podczas próby sterowania mruga

Super pomysł jak tylko wrócę to sprawdzę 

nadajnik

// transmitter.pde
//

#include <VirtualWire.h>

void setup()
{
    Serial.begin(9600);    // Debugging only
    pinMode(7, INPUT_PULLUP);
    pinMode(8, INPUT_PULLUP);
    //vw_set_tx_pin(10);
    vw_set_ptt_inverted(true); // Required for DR3100
    vw_setup(2000);  // Bits per sec
}

void loop()
{
   digitalWrite(2, true);
   while(true){
      
    if(digitalRead(7) == LOW){

      const char *msg = "p";
      
      digitalWrite(13, true);
      vw_send((uint8_t *)msg, strlen(msg));
      vw_wait_tx();
      delay(250);
      digitalWrite(13, false);
      delay(250); 
  }
  
  if (digitalRead(8) == LOW){
  
      const char *msg = "d";
        
      digitalWrite(13, true);
      vw_send((uint8_t *)msg, strlen(msg));
      vw_wait_tx();
      delay(250);
      digitalWrite(13, false);
      delay(250);
   }
 }
}

 

odbiornik 

// receiver
#include <ServoTimer2.h>
#include <VirtualWire.h>
char stan;
ServoTimer2 myservo;
int lvl = 0;

void setup()
{
    Serial.begin(9600);
    myservo.attach(9);
    vw_set_ptt_inverted(true);
     
    vw_setup(2000);	
    vw_rx_start();
    //444E574E
    //5550
}

void loop()
{
    digitalWrite(2, true);
    uint8_t buf[VW_MAX_MESSAGE_LEN];
    uint8_t buflen = VW_MAX_MESSAGE_LEN;
    
    if (vw_get_message(buf, &buflen)) 
    {
     int i;
     String stan;
     digitalWrite(13, true);
     
        for (i = 0; i < buflen; i++)
        {
         stan +=char(buf[i]);
        }
         if ( stan =="p") 
         {
            up();
            Serial.println(lvl);
            Serial.println(stan);
            delay(300);
        }
           if ( stan =="d")
        {
            down();
            Serial.println(lvl);
            Serial.println(stan);
            delay(300);
        }
        //Serial.println(buflen);
        digitalWrite(13, false);
     } 
}
void up()
{
 
  if(lvl < 6)
  {
    lvl += 1;
    checkup();
   }
   else
   {
     lvl = 1;
     checkup(); 
   }
}
void down()
{
  lvl -= 1;
  checkup();
  if(lvl == 0 )
  {
    lvl = 6;
    myservo.write(2000);
  }
  checkup();
}
void checkup()
{
 
  if (lvl == 1)
  {
    myservo.write(1000);
    delay(10);
  }
  if (lvl == 2)
  {
    myservo.write(1250);
    delay(10);
  }
  if (lvl == 3)
  {
    myservo.write(1500);
    delay(10);
  }
  if (lvl == 4)
  {
    myservo.write(1750);
    delay(10);
  }
  if (lvl == 5)
  {
    myservo.write(1900);
    delay(10);
  }
  if (lvl == 6)
  {
    myservo.write(2000);
    delay(10);
  }
}

 

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...