Go Down

Topic: Test ecran LED TM1637 (Read 966 times) previous topic - next topic

al1fch

#15
Feb 06, 2019, 03:02 pm Last Edit: Feb 06, 2019, 03:06 pm by al1fch
Quote
Voici l'écran en fonction :
côté afficheurs oui  ....mais  de l'autre côté ? (celui ou se trouve le circuit intégré pour pouvoir l'identifier indépendemnent des déclarations du vendeur)

bretzel

#16
Feb 06, 2019, 04:18 pm Last Edit: Feb 06, 2019, 04:27 pm by bretzel
Bonjour,

Ce que je ne comprend pas, c'est que dans la description Amazon, il est précisé que l'écran utilise la librairie TM1637...
Dans les commentaires égallement.

J'utilise la librairie TM1637-Master

Après vérification :

Au dos de l'écran, sur le circuit intégré, je lis bien MAXIM MAX7219CWG  (1823)





Vous aviez donc bien raison...

bretzel

Je reviens vers vous.

J'ai réussi à trouver un code pour un compteur youtube utilisant le MAX7219.

J'ai rentré ma clef API, Chanel ID ainsi que les PIN utilisés.

Quand j'allume l'ESP, je voit bien qu'il se connecte à mon téléphone en partage de connection. donc : WIFI OK

Seulement j'ai un message d'erreur, que je retrouve dans la ligne de code, mais je ne sais pas à quoi il correspond...



Code: [Select]
// YouTube Channel View Counter
// Kenneth Finnegan, 2017
//
// Given a WiFi SSID + password, and YouTube API key + channel ID, displays the
// current total views count on an attached MAX7219 eight digit display

#include <YoutubeApi.h>
#include <ESP8266WiFi.h>
#include <WiFiClientSecure.h>

//------- Replace the following! ------
char ssid[] = "iPhone de Florian";       // your network SSID (name)
char password[] = "lebretez";  // your network key
#define API_KEY "AIzaSyBYzKZ0QaKFs_PU0wDruzOA"  // your google apps API Token
#define CHANNEL_ID "UCEF5o10EG3V7C_asEscew" // makes up the url of channel

// This depends on which pins you've wired the MAX7219 driver to.
#define DISP_CS D7
#define DISP_CLK  D6
#define DISP_DATA D5


WiFiClientSecure client;
YoutubeApi api(API_KEY, client);

// The total channel view count is updated very rarely (daily?) so we don't need to check regularly
unsigned long api_mtbs = 5 * 60 * 1000; // Desired update interval in milliseconds
unsigned long api_lasttime = 0-api_mtbs;   //last time api request has been done
  // Note that we're pre-loading the "last update" variable to an interval before zero so the
  // display updates immediately on boot

////////////////////////////
// DISPLAY DRIVER SECTION //
////////////////////////////

// Soft implementation of SPI because I don't even know if the ESP-12 has SPI hardware available
// [TODO: insert rant about how much Arduino platform documentation sucks these days]
// This only sends eight bits, which is half a MAX7219 command
void disp_send(uint8_t data) {
  int i;
  for (i=0; i<8; i++) {
    // Send the most significant bit first
    digitalWrite(DISP_DATA, !!(data & (1<<(7-i))));
    delay(1); // These delays might not be needed, but I like the visual effect of the slow update
    // Then toggle the clock line
    digitalWrite(DISP_CLK, HIGH);
    delay(1);
    digitalWrite(DISP_CLK, LOW);
    delay(1);
  }
}

// Sends two bytes, the register select and the payload for that data
// See the datasheet for the full memory map:
// https://datasheets.maximintegrated.com/en/ds/MAX7219-MAX7221.pdf
void disp_cmd(uint8_t reg, uint8_t data) {
  digitalWrite(DISP_CS, LOW);
  disp_send(reg);
  disp_send(data);
  digitalWrite(DISP_CS, HIGH);
}

// Given an integer, write it to the display
void disp_number(int data) {
  int i;
  for (i=1; i<=8; i++) {
    int output = data % 10;
    // Turn on the decimal place at 4 and 7 to make it easier to read
    if (i == 4 || i == 7) output |= 0x80;
    // Blank leading zeros if we've run out of data and we're not the first digit
    if (data == 0 && i != 1) output = 0x0F;
    disp_cmd(i,output);
    data = data / 10;
  }
}

// When we aren't working, display "00000000" then "--HELP--"
void disp_error() {
  int i;
  for (i=8; i>0; i--) {
    disp_cmd(i,0x00);
  }
   
  disp_cmd(0x08,0x0A); // -
  disp_cmd(0x07,0x0A); // -
  disp_cmd(0x06,0x0C); // H
  disp_cmd(0x05,0x0B); // E
  disp_cmd(0x04,0x0D); // L
  disp_cmd(0x03,0x0E); // P
  disp_cmd(0x02,0x0A); // -
  disp_cmd(0x01,0x0A); // -
}


////////////////////////////////
// MAIN SETUP AND MASTER LOOP //
////////////////////////////////

void setup() {

  Serial.begin(115200);

  // Set up the MAX7219 display and load the command registers
  pinMode(DISP_CS, OUTPUT);
  pinMode(DISP_CLK, OUTPUT);
  pinMode(DISP_DATA, OUTPUT);
  disp_cmd(0x0C,0x01); // Leave shutdown
  delay(30);
  disp_cmd(0x0F,0x00); // Leave display test
  delay(30);
  disp_cmd(0x09,0xFF); // Use B code on all eight digits
  delay(30);
  disp_cmd(0x0A,0x02); // Set software intensity 0-15
  delay(30);
  disp_cmd(0x0B,0x07); // Scan all eight digits (blank individual digits with 0xF)
  delay(30);
  disp_error();

  // Set WiFi to station mode and disconnect from an AP if it was Previously
  // connected
  WiFi.mode(WIFI_STA);
  WiFi.disconnect();
  delay(100);

  // Attempt to connect to Wifi network:
  Serial.print("Connecting Wifi: ");
  Serial.println(ssid);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    Serial.print(".");
    delay(500);
  }
  Serial.println("");
  Serial.println("WiFi connected");
  Serial.println("IP address: ");
  IPAddress ip = WiFi.localIP();
  Serial.println(ip);


 
}

void loop() {

  if (millis() - api_lasttime > api_mtbs)  {
    Serial.println("Trying to query API");
    if(api.getChannelStatistics(CHANNEL_ID)) {
      Serial.println("---------Stats---------");
      Serial.print("Subscriber Count: ");
      Serial.println(api.channelStats.subscriberCount);
      Serial.print("View Count: ");
      Serial.println(api.channelStats.viewCount);
      Serial.print("Comment Count: ");
      Serial.println(api.channelStats.commentCount);
      Serial.print("Video Count: ");
      Serial.println(api.channelStats.videoCount);
      Serial.println("------------------------");

      disp_number(api.channelStats.viewCount);

      api_lasttime = millis();
    } else {
      // Something went wrong, so try again in 30s
      Serial.println("YOUTUBE API ERROR!");
      disp_error();
      api_lasttime += 30 * 1000;
    }
  }
}



Voici ce que l'afficheur donne :




Je ne trouve pas le soucis dans le code...

hbachetti

Tu dois aussi avoir "YOUTUBE API ERROR!" qui s'affiche dans le terminal.

As-tu aussi "Trying to query API" qui s'affiche avant ?

Si api.getChannelStatistics(CHANNEL_ID) retourne une erreur l'afficheur affiche "--HELP--".

Règle le moniteur série sur 115200 baud.

@+
Linux is like a wigwam: no Windows, no Gates, and an Apache inside ...

bretzel

#19
Feb 09, 2019, 07:10 am Last Edit: Feb 09, 2019, 07:25 am by bretzel
Bonjour,

Toutes mes excuses pour cette réponse tardive.

Sur l'écran il m'affiche : // When we aren't working, display "00000000" then "--HELP--"

J'imagine que c'est un problème de configuration vis à vis de l'écran...

_____________

J'ai réglé le moniteur série du 115200 baud, cela n'as pas eu résultat si ce n'est le même message d'erreur...

Quand je vais dans OUTILS -> MONITEUR SERIE, j'ai en effet le message "Trying to queri API"

_____________

J'ai trouvé un lien qui me permet de test ma clef API et Chanel ID :

https://www.googleapis.com/youtube/v3/channels?part=statistics&id=YOUR_CHANNEL_ID&key=YOUR_API_KEY

En remplacant "Channel ID et API KEY", j'atteris sur une page qui m'indique les statistiques de ma chaine, nombres video, vues, abonnés etc etc..

J'en conclus donc que ce n'est pas un problème vis à vis de mes identifiants

Code: [Select]
{
 "kind": "youtube#channelListResponse",
 "etag": "\"XpPGQXs6enD_n8JR4Qk/KQ8FPu0Yf0waSgng-YpbhM\"",
 "pageInfo": {
  "totalResults": 1,
  "resultsPerPage": 1
 },
 "items": [
  {
   "kind": "youtube#channel",
   "etag": "\"XpPGQXgs6enD_n8JR4Qk/7nYRcJU-93riJJoiScDiHrY\"",
   "id": "UCEF5V7C_asEMZscew",
   "statistics": {
    "viewCount": "2404",
    "commentCount": "0",
    "subscriberCount": "13",
    "hiddenSubscriberCount": false,
    "videoCount": "10"
   }
  }
 ]
}



hbachetti

Qu'il affiche "--HELP--" au démarrage, c'est normal (fin de setup()).
Par contre s'il affiche "--HELP--" après "Trying to queri API", c'est que l'API getChannelStatistics() n'a pas fonctionné.

Linux is like a wigwam: no Windows, no Gates, and an Apache inside ...

bretzel

#21
Feb 09, 2019, 12:00 pm Last Edit: Feb 09, 2019, 12:03 pm by bretzel
Sur l'écran :

Au démarrage il affiche ->  --HELP--

Une fois qu'il est connecté au WIFI il affiche ->  00000000  puis --HELP--

Ce message tourne en boucle...


Rien de plus.

_____

Le trying to request API c'est quand je vais dans le moniteur du Sof Arduino





hbachetti

Je peux difficilement aider.
Tu pourrais modifier la méthode getChannelStatistics de YoutubeApi.cpp en ajoutant des Serial.print() pour afficher response. C'est un String.
Linux is like a wigwam: no Windows, no Gates, and an Apache inside ...

hbachetti

En ajoutant dans YoutubeApi.cpp la ligne suivante :
Code: [Select]

#define _debug 1



Code: [Select]

WiFi connected
IP address:
192.168.1.18
Trying to query API
Closing client
.... connected to server
Body:
b0
{
 "error": {
  "errors": [
   {
    "domain": "usageLimits",
    "reason": "keyInvalid",
    "message": "Bad Request"
   }
  ],
  "code": 400,
  "message": "Bad Request"
 }
}


END
Closing client
YOUTUBE API ERROR!


keyInvalid !

Remarque : tu devrais quand même éditer ton message et remplacer tes identifiants WIFI et autres par XXXXXXX


Linux is like a wigwam: no Windows, no Gates, and an Apache inside ...

bretzel

Je ne trouve pas "YoutubeApi.cpp" , pourriez vous méclairer ?

Question de boulet  :smiley-confuse:

hbachetti

YoutubeApi.cpp: dans ton installation arduino : dans libraries/arduino-youtube-api
Linux is like a wigwam: no Windows, no Gates, and an Apache inside ...

hbachetti

Ceci dit, avec un navigateur j'obtiens le même résultat :
https://www.googleapis.com/youtube/v3/channels?part=statistics&id=UCEF5o10EG3V7C_asEscew&key=AIzaSyBYzKZ0QaKFs_PU0wDruzOA
   
error   
errors   
0   
domain   "usageLimits"
reason   "keyInvalid"
message   "Bad Request"
code   400
message   "Bad Request"
Linux is like a wigwam: no Windows, no Gates, and an Apache inside ...

bretzel

Bonjour hbachetti,

C'est normal que vous obteniez un message d'erreur avec l'URL puisque j'ai volontairement raccourci mon API KEY / Chanel ID pour les masquer sur ce forum...

Voici la capture du résultat que j'obtiens, et toutes les infos sont bien récupérés, Vues, abonnés, vidéos...






hbachetti

OK.
Si l'URL est la même que dans le navigateur, cela devrait donner le même résultat.

Le _debug a t'il été activé dans YoutubeApi.cpp ?
Linux is like a wigwam: no Windows, no Gates, and an Apache inside ...

bretzel

#29
Feb 11, 2019, 11:50 am Last Edit: Feb 11, 2019, 01:54 pm by bretzel
Je n'ai pas vu de changement avec la fonction débug.

Ce que j'ai du mal à comprendre c'est que dans la Console Moniteur Série, il m'affiche le message d'erreur :

https://www.casimages.com/i/19020912080628213.jpg

Ce qui montre bien qu'il n'arrive pas à récupérer les informations...

Go Up