u/GuixBretas

Como que se pousa assim?

Como que se pousa assim?

Tirei essa foto uns anos atrás e acabei achando perdida numa pasta aleatória do meu PC

u/GuixBretas — 4 days ago

Quero achar essa galinha pintadinha promocional da Babysec

Eu tentei comprar numa farmácia do bairro mas não puderam vender por ser material promocional, procurei na internet em diversos sites de vendas e não achei. Se alguém encontrar uma à venda online me avisem por favor. Eu recebo no fim do mês então não tem muita pressa. Parece que são 2 modelos diferentes, eu tenho interesse pelos 2 mas principalmente esse da foto.

u/GuixBretas — 10 days ago

Já fiz 2 posts sobre isso, uma dois anos atrás e o outro post é recente. Simplesmente não quis deixar uma guitarra do Guitar Hero da marca Clone morrer, até pq eu sou viciado em Guitar Hero até hoje. E é o seguinte, no último post minha ideia era usar uma placa de joystick genérico pra recuperar a placa principal* da guitarra**, o que acabou dando quase certo mas os botões estavam pressionando sozinho, então removi a placa do joystick e depois de muito pensar, decidi usar uma placa ESP32 que estava parada aqui em casa faz uns meses. Soldei tudo na placa e agora a guitarra está funcionando perfeitamente via bluetooth, que nos meus testes, incrivelmente não ficou com latência pelo que notei. Meu próximo passo é soldar uma bateria, preciso comprar o módulo primeiro.

* Tive que cortar as trilhas da placa principal pra o que sobrou não ficar interferindo no resultado final

** A guitarra é muito antiga, primeiro começou com problema no wireless, e depois a placa foi dando defeitos aleatórios que fui tentando arrumar, mas só foi piorando.

Abaixo deixo o código que eu usei no Arduino IDE:

/*
  ============================================================
  Guitar Hero BLE Gamepad - ESP32-WROOM
  Clone Hero compatible
  ============================================================
  Mapeamento de pinos:
    D13 -> Botão Verde   (Fret 1) -> Botão 1
    D12 -> Botão Vermelho(Fret 2) -> Botão 2
    D14 -> Botão Amarelo (Fret 3) -> Botão 3
    D27 -> Botão Azul    (Fret 4) -> Botão 4
    D26 -> Botão Laranja (Fret 5) -> Botão 5
    D33 -> Strum Up               -> DPad Cima
    D32 -> Strum Down             -> DPad Baixo
    D34 -> Whammy Bar             -> Eixo Z (analógico)
    D4  -> Start                  -> Botão 6
    D5  -> Select                 -> Botão 7


  Dependência: BleGamepad by lemmingdev
  Instalar via Library Manager: "BleGamepad"
  ============================================================
*/


#include <BleGamepad.h>
#include <NimBLEDevice.h>


// --- Pinos ---
#define PIN_VERDE    13   // Fret 1
#define PIN_VERMELHO 12   // Fret 2
#define PIN_AMARELO  14   // Fret 3
#define PIN_AZUL     27   // Fret 4
#define PIN_LARANJA  26   // Fret 5
#define PIN_STRUM_UP   33
#define PIN_STRUM_DOWN 32
#define PIN_WHAMMY     34
#define PIN_START       4   // Botão 6
#define PIN_SELECT      5   // Botão 7


// --- BLE Gamepad ---
// Nome que vai aparecer no Bluetooth do PC
BleGamepad bleGamepad("Guitar Hero Controller", "ESP32", 100);


BleGamepadConfiguration config;


void setup() {
  Serial.begin(115200);
  Serial.println("Iniciando Guitar Hero BLE...");


  // Configura pinos como entrada com pull-up interno
  // (botão fecha o circuito para GND)
  pinMode(PIN_VERDE,    INPUT_PULLUP);
  pinMode(PIN_VERMELHO, INPUT_PULLUP);
  pinMode(PIN_AMARELO,  INPUT_PULLUP);
  pinMode(PIN_AZUL,     INPUT_PULLUP);
  pinMode(PIN_LARANJA,  INPUT_PULLUP);
  pinMode(PIN_STRUM_UP,   INPUT_PULLUP);
  pinMode(PIN_STRUM_DOWN, INPUT_PULLUP);
  // D34 é input-only no ESP32, não suporta pull-up interno
  pinMode(PIN_WHAMMY, INPUT);
  pinMode(PIN_START,  INPUT_PULLUP);
  pinMode(PIN_SELECT, INPUT_PULLUP);


  // Configura o gamepad: 7 botões + DPad + eixo Z (whammy)
  config.setButtonCount(7);
  config.setHatSwitchCount(1); // DPad para o strum
  config.setAutoReport(false); // Controle manual do envio


  NimBLEDevice::setSecurityAuth(true, true, true); // bonding, MITM, SC
  NimBLEDevice::setSecurityPasskey(22558800);         // seu PIN aqui
  NimBLEDevice::setSecurityIOCap(BLE_HS_IO_DISPLAY_ONLY);


  bleGamepad.begin(&config);
  Serial.println("Aguardando conexão BLE...");
}


// Estado anterior para detectar mudança (evita envio desnecessário)
bool prevVerde    = false;
bool prevVermelho = false;
bool prevAmarelo  = false;
bool prevAzul     = false;
bool prevLaranja  = false;
bool prevStrumUp   = false;
bool prevStrumDown = false;
bool prevStart     = false;
bool prevSelect    = false;
int  prevWhammy    = 0;


void loop() {
  if (!bleGamepad.isConnected()) {
    // Pisca no serial enquanto aguarda conexão
    Serial.println("Aguardando conexão...");
    delay(1000);
    return;
  }


  // Lê os pinos (LOW = pressionado, por causa do pull-up)
  bool verde    = !digitalRead(PIN_VERDE);
  bool vermelho = !digitalRead(PIN_VERMELHO);
  bool amarelo  = !digitalRead(PIN_AMARELO);
  bool azul     = !digitalRead(PIN_AZUL);
  bool laranja  = !digitalRead(PIN_LARANJA);
  bool strumUp   = !digitalRead(PIN_STRUM_UP);
  bool strumDown = !digitalRead(PIN_STRUM_DOWN);
  bool start     = !digitalRead(PIN_START);
  bool select    = !digitalRead(PIN_SELECT);
  // Whammy: lê analógico (0-4095) e mapeia para 0-32767
  int whammyRaw  = analogRead(PIN_WHAMMY);
  int whammy     = map(whammyRaw, 0, 4095, 0, 32767);


  // Verifica se houve mudança de estado
  bool mudou = (verde    != prevVerde    ||
                vermelho != prevVermelho ||
                amarelo  != prevAmarelo  ||
                azul     != prevAzul     ||
                laranja  != prevLaranja  ||
                strumUp  != prevStrumUp  ||
                strumDown!= prevStrumDown ||
                start    != prevStart    ||
                select   != prevSelect   ||
                abs(whammy - prevWhammy) > 200); // tolerância pra ruído analógico


  if (mudou) {
    // --- Frets (botões 1 a 5) ---
    if (verde)    bleGamepad.press(BUTTON_1);
    else          bleGamepad.release(BUTTON_1);


    if (vermelho) bleGamepad.press(BUTTON_2);
    else          bleGamepad.release(BUTTON_2);


    if (amarelo)  bleGamepad.press(BUTTON_3);
    else          bleGamepad.release(BUTTON_3);


    if (azul)     bleGamepad.press(BUTTON_4);
    else          bleGamepad.release(BUTTON_4);


    if (laranja)  bleGamepad.press(BUTTON_5);
    else          bleGamepad.release(BUTTON_5);


    if (start)    bleGamepad.press(BUTTON_6);
    else          bleGamepad.release(BUTTON_6);


    if (select)   bleGamepad.press(BUTTON_7);
    else          bleGamepad.release(BUTTON_7);


    // --- Whammy Bar (eixo Z) ---
    bleGamepad.setZ(whammy);


    // --- Strum via DPad (Hat Switch) ---
    if (strumUp && !strumDown) {
      bleGamepad.setHat(HAT_UP);
    } else if (strumDown && !strumUp) {
      bleGamepad.setHat(HAT_DOWN);
    } else {
      bleGamepad.setHat(HAT_CENTERED);
    }


    // Envia o relatório HID
    bleGamepad.sendReport();


    // Atualiza estado anterior
    prevVerde    = verde;
    prevVermelho = vermelho;
    prevAmarelo  = amarelo;
    prevAzul     = azul;
    prevLaranja  = laranja;
    prevStrumUp   = strumUp;
    prevStrumDown = strumDown;
    prevStart     = start;
    prevSelect    = select;
    prevWhammy    = whammy;
  }


  // Pequeno delay para debounce e estabilidade
  delay(5);
}
u/GuixBretas — 19 days ago
▲ 943 r/vinyljerk+1 crossposts

I don't need to say how much I hate the pages that makes videos like this.

u/GuixBretas — 25 days ago