problème Attiny85 Micro USB Development Board qui reboot si alimenté par vin

bonjour, je ne comprend pas d’où vient la panne.
j’ai ce type de carte :
et câblé le schéma en pièce jointe.

Quand j’alimente la carte en usb, elle fonctionne très bien. mais si je débranche l’usb et que je l’alimente en 5v par vin ou la broche 5v, le ATtiny ne fait que rebooter. Ma diode ne fait que clignoter

#include <sav_button.h>
#include <Bounce.h>

const int mosfet=0;
const int led=1;
const int fire=2;
const int plus=3;
const int moins=4;
int pwm=70;
int pas=10;
int bigPas=30;
int compteurBlocageFire=0;
int compteurBlocagePwm=0;
bool blocageFire=false;
bool blocagePwm=false;
unsigned long tempsFire=0;
unsigned long dureFire=10000;
SButton boutonFire(fire,50,180,10000,300); //broche, durée du rebond ms, durée de l'appui long ms, heure du prochain appui prolongé, temps du double clic
SButton boutonPlus(plus,50,1000,4000,300); //broche, durée du rebond ms, durée de l'appui long ms, heure du prochain appui prolongé, temps du double clic
SButton boutonMoins(moins,50,1000,4000,300); //broche, durée du rebond ms, durée de l'appui long ms, heure du prochain appui prolongé, temps du double clic
Bounce bouncerFire = Bounce( fire,50 );
Bounce bouncerPlus = Bounce( plus,50 );
Bounce bouncerMoins = Bounce( moins,50 );

void setup() {
  pinMode(led, OUTPUT);
  pinMode(mosfet, OUTPUT);
  pinMode(fire, INPUT_PULLUP);
  pinMode(plus, INPUT_PULLUP);
  pinMode(moins, INPUT_PULLUP);// faut mettre une résistance de pull up ??????????
  pinMode(5, INPUT_PULLUP);
  clignoteLed(6);
  digitalWrite(led,LOW);
  digitalWrite(mosfet,LOW);
} 


void loop() {
   switch( boutonFire.Loop() ){
	case CLICK:
		clickFire();
    break;

    case DOUBLE_CLICK:
		doubleclickFire();
    break;

    case LONG_CLICK:
		longPressStartFire();
    break;
    
    case LONG_CLICK_OFF:
		longPressStopFire();
    break;
    
    case AUTO_CLICK:
    veryLongPressFire();		
     break;
   }
   
      switch( boutonPlus.Loop() ){
	case CLICK:
		clickPlus();
    break;

    case DOUBLE_CLICK:
		doubleclickPlus();
    break;

    case LONG_CLICK:
		longPressStartPlus();
    break;
    
    case LONG_CLICK_OFF:
		longPressStopPlus();
    break;
   
   }
   
    switch( boutonMoins.Loop() ){
	case CLICK:
		clickMoins();
    break;

    case DOUBLE_CLICK:
		doubleclickMoins();
    break;

    case LONG_CLICK:
		longPressStartMoins();
    break;
    
    case LONG_CLICK_OFF:
		longPressStopMoins();
    break;
   }
} 


// bouton fire
void clickFire() {
  
  if (blocageFire==false){
      analogWrite(mosfet,pwm);
      digitalWrite(led,HIGH); 
	    delay(10);
	    digitalWrite(mosfet,LOW);	
	    digitalWrite(led,LOW);
  } else {
      digitalWrite(mosfet,LOW); 
      digitalWrite(led,LOW);
    }
}
void doubleclickFire() {
	compteurBlocageFire=compteurBlocageFire+1;
	if (compteurBlocageFire == 3){
		blocageFire=true;
		clignoteLed(3);
	}
	else if (compteurBlocageFire == 6){
		blocageFire=false;
		compteurBlocageFire=0;
		clignoteLed(6);
	} else clignoteLed(1);
} 
void longPressStartFire() { 
  if (blocageFire==false){
      analogWrite(mosfet,pwm);
      digitalWrite(led,HIGH); 
  } else {      
    digitalWrite(mosfet,LOW);
    digitalWrite(led,LOW);
  }
      
} 
void veryLongPressFire() {

		digitalWrite(mosfet,LOW);
		digitalWrite(led,LOW);
		clignoteLed(5);

} 
void longPressStopFire() {
      digitalWrite(mosfet,LOW);
      digitalWrite(led,LOW);
} 
// bouton fire

// bouton plus
void clickPlus() {
	if (blocagePwm==false){
		pwm=pwm+pas;
		digitalWrite(led,HIGH);
		delay(10);
		digitalWrite(led,LOW);
	}else digitalWrite(led,LOW);
} 
void doubleclickPlus() {
  	compteurBlocagePwm=compteurBlocagePwm+1;
	if (compteurBlocagePwm == 3){
		blocagePwm=true;
		clignoteLed(4);
	}
	else if (compteurBlocagePwm == 6){
		blocagePwm=false;
		compteurBlocagePwm=0;
		clignoteLed(8);
	} else clignoteLed(1);
}
void longPressStartPlus() {
 	if (blocagePwm==false){
		pwm=pwm+bigPas; 
		digitalWrite(led,HIGH);		
	}else digitalWrite(led,LOW);
}  
void longPressStopPlus() {
	digitalWrite(led,LOW);
} 
// bouton plus

// bouton moins
void clickMoins() {
	if (blocagePwm==false){
		pwm=pwm-pas;
		digitalWrite(led,HIGH);
		delay(10);
		digitalWrite(led,LOW);		
	}else digitalWrite(led,LOW);
} 
void doubleclickMoins() {
  	compteurBlocagePwm=compteurBlocagePwm+1;
	if (compteurBlocagePwm == 3){
		blocagePwm=true;
		clignoteLed(4);
	}
	else if (compteurBlocagePwm == 6){
		blocagePwm=false;
		compteurBlocagePwm=0;
		clignoteLed(8);
	} else clignoteLed(1);
}
void longPressStartMoins() {
	if (blocagePwm==false){
		pwm=pwm-bigPas; 
		digitalWrite(led,HIGH);
	}else digitalWrite(led,LOW);
} 
void longPressStopMoins() {
	digitalWrite(led,LOW);
} 
// bouton moins


int clignoteLed(int cligno){
	int y=0;
	while (y < cligno){
		digitalWrite(led,HIGH);
		delay(200);
		digitalWrite(led,LOW);
		delay(200);
		y++;
	}
}
// End

Bonjour buldo

buldo:
si je débranche l’usb et que je l’alimente en 5v par vin ou la broche 5v

Je ne comprends pas le problème dès que tu alimentes en 5V par la broche 5V. mais par contre l’alimentation par VIN c’est entre 7 et 12v. (certaines doc disent 35V. mais…)

Cordialement
jpbbricole

Tu branches aussi le GND j'espère ?
Sinon tu peux utiliser une batterie externe USB style recharge de téléphone portable

Merci.
C'était bien un problème de masse sur ma plaquette lab, les gnd était bien raccordés mais en touchant avec le doigt la prise usb, le problème a disparu. je verrais en soudant sur une plaque d’essais ....