LOCODUINO
Parlons Arduino => Débuter => Discussion démarrée par: Ludo5687 le décembre 16, 2020, 12:20:44 pm
-
Bonjour à tous,
j'ai fait l'acquisition d'un attiny85 pour piloter mes signaux de on réseau, mais quand je le branche dans un port usb de mon pc il n'est pas reconnu et je n'arrive pas à le faire reconnaitre par mon pc.
Comment faut-il faire pour pouvoir l'utiliser?
Je travail sous Windows10.
Merci
-
Si c’est un model « digispark » il faut installer le « digistump » pour qu’il soit reconnu par l’IDE.
Voir les tutos :
https://digistump.com/wiki/digispark/tutorials/connecting (https://digistump.com/wiki/digispark/tutorials/connecting)
Ca ne marche pas comme les ATMega !
-
Bonjour
http://forum.locoduino.org/index.php?topic=256.165
http://forum.locoduino.org/index.php?topic=256.msg8566#msg8566
-
Merci pour les différents liens,
mais c'est quand je connecte l'Attiny85 en usb qu'il n'est pas reconnu, malgré que j'ai installé les drivers.
Je travail avec Windows 10
-
Quel produit connectez-vous !
Ce ne peut pas être le chip ATTiny 85, mais c’est sans doute une carte avec son connecteur USB ? Non ?
Soyez plus clair svp. Quel montage voulez-vous faire ?
Qu’affiche l’IDE au televersement?
-
J'ai testé une carte ATTiny 85 avec l"exemple Start situé dans le dossier Exemples/Digispark_Examples
Ca marche du premier coup !
Evidemment on ne voit pas l 'ATTiny dans la ligne "Port" de l'IDE !!! C'est normal et expliqué dans ce forum.
J'ai quand même l'impression que vous n'avez pas lu les liens donnés par Catplus et moi ...
Ou alors votre carte est défectueuse
Expliquez-vous mieux :D
Running Digispark Uploader...
Plug in device now... (will timeout in 60 seconds)
> Please plug in the device ...
> Press CTRL+C to terminate the program.
> Device is found!
connecting: 16% complete
connecting: 22% complete
connecting: 28% complete
connecting: 33% complete
> Device has firmware version 1.6
> Available space for user applications: 6012 bytes
> Suggested sleep time between sending pages: 8ms
> Whole page count: 94 page size: 64
> Erase function sleep duration: 752ms
parsing: 50% complete
> Erasing the memory ...
erasing: 55% complete
erasing: 60% complete
erasing: 65% complete
> Starting to upload ...
writing: 70% complete
writing: 75% complete
writing: 80% complete
> Starting the user app ...
running: 100% complete
>> Micronucleus done. Thank you!
-
Je viens de trouver une autre complément de l'IDE Arduino pour la famille ATTiny :
https://github.com/SpenceKonde/ATTinyCore (https://github.com/SpenceKonde/ATTinyCore)
Il y a un lien pour l'installation :
https://github.com/SpenceKonde/ATTinyCore/blob/master/Installation.md (https://github.com/SpenceKonde/ATTinyCore/blob/master/Installation.md)
L'ATTiny85 se trouve dans le menu ATTinyCore : ATTiny85 (MicroNucleus/Digispark)
L'exemple suivant permet de tester la connexion :
// the setup routine runs once when you press reset:
void setup() {
// initialize the digital pin as an output.
pinMode(0, OUTPUT); //LED on Model B
pinMode(1, OUTPUT); //LED on Model A or Pro
}
// the loop routine runs over and over again forever:
void loop() {
digitalWrite(0, HIGH); // turn the LED on (HIGH is the voltage level)
digitalWrite(1, HIGH);
delay(250); // wait for a second
digitalWrite(0, LOW); // turn the LED off by making the voltage LOW
digitalWrite(1, LOW);
delay(250); // wait for a second
}
Au moment du téléversement, il ne faut pas que la carte Digispark soit connectée à l'USB : il faut la connecter quand c'est demandé par l'IDE dans les lignes rouges sous le sketch : le délai est de 60 s.
Je viens de tester aussi sur un ATTiny 167 aussi Digispark et ça marche aussi !
Est-ce OK pour vous maintenant ?
-
tout ce passe correctement, mais c'est quand place l'attiny dans le port usb que ça ne fonctionne pas.
(http://)
-
Bon, vous persistez à ne pas répondre sur ce que vous voulez faire et comment.
Il est indiqué partout que le port serie USB n’est pas visible, ni sous Windows, ni MacOS, sauf à utiliser un software serial. Et un adaptateur externe.
Donc :
- quel est votre ATTiny ?
- quel est votre montage ?
- quel est votre sketch (bibliothèques incluses) et pour quoi faire ?
- comment est configure votre IDE.
- qu’affiche l’IDE quand le sketch est televersé?
Il n’y aura plus de réponse sans cela, j’ai déjà passé la matinée pour vous :D
-
... ça ne fonctionne pas ...
Mais quelques précisions nous seraient utiles.
Effectivement ce composant est un piège à lui tout seul.
Voir les "petits" détails qui gâchent tout (et la vidéo) :
https://forum.locoduino.org/index.php?topic=601.msg6783#msg6783
-
Voilà mon projet, enfin...
Je voudrais utiliser l'attiny comme décodeur pour mes signaux de trains, j'ai vu cette vidéo https://www.youtube.com/watch?v=1CZm-1rwTGs&t=840s (https://www.youtube.com/watch?v=1CZm-1rwTGs&t=840s) et je trouvais pratique.
J'ai suivi son explication et les autres des divers liens partagé dans cette discution, mais je dois surement me planter sur un point.
Voici l'attiny en question (https://www.alwaylookgoodonyou.com/image/cache/bflw/CX0353B_1-600x600.jpg)
Voici le sketch
#include <EEPROM.h>
#include <NmraDcc.h>
// die NmraDCC - Library gibt es unter https://github.com/mrrwa/NmraDCC/archive/master.zip
// anzupassende Konstante:
#define DCC_DECODER_VERSION_ID 02 // Versions-ID zur Speicherung in CV 7
//#define DB_PRINT( ... ) sprintf( dbgbuf,"Dbg: " __VA_ARGS__ ) ; Serial.println( dbgbuf )
//char dbgbuf[80];
#define LEDanzahl 5
#define Adressen 1
//byte ledpins [] = {8,9,10,11,12}; // Uno
byte ledpins [] = {0,1,3,4,5}; //Attiny85
int DCC_ADDR = 1; // DCC-Adresse
byte Signalbildgruppe = 0; // 0=Sh0 2=Hauptsignal
boolean Prog = false;
byte Signalbild [4][5] = {
{1,1,0,0,0}, // Sh0
{0,0,1,1,0}, // Sh1
{1,0,0,1,0}, // Hp0 Vr0
{0,1,1,1,0} // Hp2 Vr2
};
byte Letztes_Signalbild=7; //aus
const word CV_Letztes_Signalbild = 33;
const word CV_Signalbildgruppe= 34;
// CV Speicher Struktur
struct CVPair
{
uint16_t CV;
uint8_t Value;
};
// CV Default-Werte
CVPair FactoryDefaultCVs [] =
{ {CV_ACCESSORY_DECODER_ADDRESS_LSB, DCC_ADDR%256},
{CV_ACCESSORY_DECODER_ADDRESS_MSB, DCC_ADDR/256},
{CV_Letztes_Signalbild, 0},
{CV_Signalbildgruppe, 0},
};
NmraDcc DCC;
//DCC_MSG Packet ;
///////////////////////////////////////////////////////////////
void setup() {
//Serial.begin(115200);
for (int i=0; i< LEDanzahl; i++) {
pinMode(ledpins, OUTPUT); // auf Ausgangschalten und LED aus.
digitalWrite(ledpins,HIGH);
}
Programmieren();
DCC.init( MAN_ID_DIY, DCC_DECODER_VERSION_ID, FLAGS_OUTPUT_ADDRESS_MODE | FLAGS_DCC_ACCESSORY_DECODER,0 );
DCC.pin(0, 2, 1); // DCC-Signal an Pin2 ( = Int0 );
/////////////////////////////////////
// DCC-Adresse setzen
if ( DCC.getCV( 9 ) == 255 ) { // wenn keine gültige Adresse gespeichert ist
DCC.setCV( 1, DCC_ADDR % 256 );
DCC.setCV( 9, DCC_ADDR / 256 );
}
/* // muss weg für Attiny
if ( DCC.getCV(CV_Letztes_Signalbild ) == 255 ) { // wenn keine gültige Adresse gespeichert ist
DCC.setCV( CV_Letztes_Signalbild, 0);
}
if ( DCC.getCV(CV_Signalbildgruppe ) == 255 ) { // wenn keine gültige Adresse gespeichert ist
DCC.setCV( CV_Signalbildgruppe, 0);
}
DB_PRINT( "CV1:%d, CV9:%d, CV29:%d, CV7=%d, CV8=%d, CV33=%d, CV34=%d", DCC.getCV(1), DCC.getCV(9), DCC.getCV(29), DCC.getCV(7), DCC.getCV(8), DCC.getCV(33), DCC.getCV(34) );
// */
// Letztes Signalbild laden
Signalbildgruppe = DCC.getCV(CV_Signalbildgruppe); // Signalbildgruppe/Hauptsignal laden
exec_function(DCC.getCV(CV_Letztes_Signalbild ));
//Adresse aus CV 1 und 9 laden
DCC_ADDR =(DCC.getCV(9)*256)+ DCC.getCV(1);
}
////////////////////////////////////////////////////////////////
void loop() {
DCC.process(); // Hier werden die empfangenen Telegramme analysiert
if(Prog == true){
for (int i=0; i< LEDanzahl; i++) {
digitalWrite(ledpins, LOW);
delay (50);
}
for (int i=0; i< LEDanzahl; i++) {
digitalWrite(ledpins, HIGH);
delay (50);
}
}
}
void Programmieren()
{
pinMode(2, INPUT);
long Zeit;
Zeit = millis();
while(digitalRead(2)== LOW) {
}
if (millis() > Zeit+100){
// DB_PRINT("Zeit:%d",millis()- Zeit+100);
Prog = true;
}
}
//////////////////////////////////////////////////////////////
// Unterprogramme, die von der DCC Library aufgerufen werden:
// Die folgende Funktion wird von DCC.process() aufgerufen, wenn ein Weichentelegramm empfangen wurde
void notifyDccAccState( uint16_t Addr, uint16_t BoardAddr, uint8_t OutputAddr, uint8_t State ){
if (Prog == true ){
DCC.setCV( 1, Addr % 256 );
DCC.setCV( 9, Addr / 256 );
DCC_ADDR =Addr;
if ( OutputAddr & 0x1 ){
Signalbildgruppe=2;
DCC.setCV( CV_Signalbildgruppe, Signalbildgruppe);
}
else{
Signalbildgruppe=0;
DCC.setCV( CV_Signalbildgruppe, Signalbildgruppe);
}
Prog= false;
}
//DB_PRINT ("CV_Adresse %d, Programm-adrssse %d ", Addr, DCC_ADDR);
for( int k=0; k<Adressen; k++) //
{ //überprüfe Adresse
if (Addr == DCC_ADDR+k) //
{
if ( OutputAddr & 0x1 )
{ exec_function(k*2+Signalbildgruppe);
}
else
{ exec_function(k*2+1+Signalbildgruppe);
}
} //if addr
}//for
}
void exec_function (int SBnr) {
#define fadedelay 5
// Serial.println(SBnr,DEC);
if (Letztes_Signalbild != SBnr)
{
for (int i=0; i<60; i++) //ausblenden
{
for (int j=0; j<5; j++) if (Signalbild[SBnr][j]==0 && Signalbild[Letztes_Signalbild][j]==1) digitalWrite( ledpins[j],1);
delay(fadedelay*i/60.0);
for (int j=0; j<5; j++) if (Signalbild[SBnr][j]==0 && Signalbild[Letztes_Signalbild][j]==1) digitalWrite( ledpins[j],0);
delay(fadedelay-(fadedelay*i/60.0));
}
//LEDs Aus
for (int j=0; j<5; j++) if (Signalbild[SBnr][j]==0 && Signalbild[Letztes_Signalbild][j]==1) digitalWrite( ledpins[j],1);
for (int i=0; i<60; i++) // einblenden
{
for (int j=0; j<5; j++) if (Signalbild[SBnr][j]==1 && !Signalbild[Letztes_Signalbild][j]==1) digitalWrite( ledpins[j],0);
delay(fadedelay*i/60.0);
for (int j=0; j<5; j++) if (Signalbild[SBnr][j]==1 && !Signalbild[Letztes_Signalbild][j]==1) digitalWrite( ledpins[j],1);
delay(fadedelay-(fadedelay*i/60.0));
}
// LEDs ein
for (int j=0; j<5; j++) digitalWrite( ledpins[j],!Signalbild[SBnr][j]);
Letztes_Signalbild=SBnr;
DCC.setCV( CV_Letztes_Signalbild, SBnr);
}// for
}
Même avec celui-ci pas moiyen:
void setup() {
// Initialize the digital pin as an output
pinMode(0, OUTPUT); // LED on Model B
pinMode(1, OUTPUT); // LED on Model A
}
void loop() {
digitalWrite(0, HIGH); // Turn the LED on
digitalWrite(1, HIGH);
delay(1000); // Wait for a second
digitalWrite(0, LOW); // Turn the LED off
digitalWrite(1, LOW);
delay(1000); // Wait for a second
}
-
Votre problème est l'installation du pseudo driver qui n'apparait que dans les périphériques cachés du gestionnaire de périphériques en tant que "libusb-win32 devices". Y est-il ?
Voir le fil cité plus tôt.
-
Effectivement, c'est bien ça le problème, "libusb-win32 devices" n'apparait pas.
-
C'est que vous n'avez pas suivi la procédure (je fais du copier-coller du fil cité plus haut) :
les "cartes" sont à installer via http://digistump.com/package_digistump_index.json (dans Préférences puis Gestionnaire de cartes)
Puis il faut lancer DPinst64.exe directement (et non via les .bat qui plantent) pour un système x64. (le driver n'apparait que dans les périphériques cachés du gestionnaire de périphériques en tant que "libusb-win32 devices")
Et dans l'IDE il faut choisir Digispark Default 16.5 Mhz comme carte
avec le programmateur Micronucleus
et surtout ne pas connecter le Digispark avant de lancer le télédéversement. Celui-ci sollicite la connexion pendant 60 secondes quand la compilation est terminée.
Vous avez fait tout ça ?
-
Maintenant le Bootloader est isntallé et apparait dans le gestionnaire, mais toujours pas possible de téléverser.
Voici les captures que je viens de faire, est-ce que tout est correct?
-
... mais toujours pas possible de téléverser ...
Oui, mais avez-vous fait le reste ?
-
oui, j'ai refait la procédure, j'ai également fait des recherches sur le net et j'ai lu qu'il faudrait peut-être un hub usb avec alimentation pour connecter l'attiny et que ça réglerait le problème.
-
Personnellement, moi non plus sur Mac, je ne vois pas le port série USB.
Je ne comprends pas bien pourquoi vous choisissez cet ATtiny pour décoder les commandes de signaux en DCC avec tout ce logiciel !!
Il a peu de mémoire et n'est pas pratique à débugger ou alors il faut des outils plus sophistiqués.
Est-ce une contrainte de place ?
Est-ce un problème de budget ?
Etes-vous débutant en Arduino modélisme ferroviaire ?
Personnellement de prendrais un Nano ou un Pro-mini qui vous permettrait de tout faire sans vous casser comme cela.
-
... j'ai refait la procédure ...
Ce n'est pas refaire la procédure qu'il faut, c'est la terminer.
Avez vous lancé DPinst64.exe ?
Faites nous une capture d'écran du résultat.
Tout à fait d'accord avec Dominique que vous n'avez pas choisi la solution la plus simple, mais maintenant que vous êtes près du but ...
-
Je pense aller chercher un Hub Usb avec alimentation dés lundi pour tenter le coup.
-
Un port USB délivre 500mA. C’est beaucoup plus que ce que consomme un ATTiny : regardez sa datasheet : vous devriez vous en douter !
En plus c’est faux : mon ATTiny fonctionne bien sur un port USB de mon Mac (juste l’alimentation). Je pense que votre ATTiny est mort >:(
Laissez tomber l’ATTiny et passez au Nano : vous n’avez toujours pas expliqué pourquoi communiquer avec le PC, inutile pour un décodeur DCC sauf debuggage. Debuggez sur Nano ou installez un port softserial sur ATTiny.
Il n’y a plus de progrès. On tourne en rond. Ce fil devient incompréhensible et n’apporte rien à la communauté ! je vais devoir l’effacer !
-
Pour programmer mon attiny, je dois quand même passer par le pc, je trouve dommage le ton que vous utilisez, je viens pour avoir de l'aide.
Sinon, comment vous programmer vos attinys?
Effectivement, je pense de plus en plus aux nanos pour mon projet, le choix de l'attiny est du à la vidéo trouvé sur youtube.
J'ai remarqué juste encore une chose, il n'y a pas de port com dans mon IDE, est-ce normale?
-
Pour programmer mon attiny, je dois quand même passer par le pc, je trouve dommage le ton que vous utilisez, je viens pour avoir de l'aide.
Sinon, comment vous programmer vos attinys?
Effectivement, je pense de plus en plus aux nanos pour mon projet, le choix de l'attiny est du à la vidéo trouvé sur youtube.
Désolé pour le ton, il faut parfois mettre les points sur les i.
Bien sûr il faut un port pour programmer, mais cela ça marche : j’ai vérifié plusieurs fois. Mais après programmation, il n’y a plus de port sauf selon ce que j’ai expliqué (softserial).
Dans votre cas passez au Nano, laissez tomber cette vidéo pas claire du tout et surtout lisez les articles où les réponses à vos questions existent.
Bonnes fêtes de fin d’année :D
-
Je pense aller chercher un Hub Usb avec alimentation dés lundi pour tenter le coup.
Je crains malheureusement qu'on ne puisse rien faire de plus pour vous :
Nous vous avons donné tous les détails de la procédure et les écueils à éviter. Vous n'en tenez pas compte et vous ne nous donnez pas les résultats.
PS : quand on demande de l'aide, on essaie de remercier et de collaborer plutôt que de se plaindre de se faire critiquer (à juste titre).
-
Pour programmer mon attiny, je dois quand même passer par le pc, je trouve dommage le ton que vous utilisez, je viens pour avoir de l'aide.
Sinon, comment vous programmer vos attinys?
Je vais déjà répondre à la dernière question : programmer les ATtiny est une procédure qui a été largement décrite dans ma série d'articles sur les ATtiny. Il suffit d'une carte Uno et il n'y a pas besoin de Digitruc ou autre gadget. Cela fonctionne très bien ; voyez les applications qu'on propose pour le modélisme ferroviaire.
Ce forum est justement là pour aider ceux qui rencontrent des problèmes avec les microcontrôleurs, ce qui est votre cas. J'ai suivi ce fil et franchement, mes deux collègues ont fait tout leur possible pour vous trouver des solutions, mais vous ne semblez pas vouloir les suivre car ce ne sont pas LA solution que vous aimeriez qu'on vous donne. A ce stade, je ne vois pas ce qu'on peut faire de plus pour vous et on a un peu l'impression de perdre notre temps.
A vous de décider si notre aide vous est utile et si vous n'en voulez pas, nous ne vous en voudrons pas plus pour autant. Sinon, vous êtes le bienvenu si réellement vous êtes là pour résoudre votre problème technique. :)
Bien cordialement.
Christian - administrateur également.