Quantcast
Channel: Arduino Forum - Latest topics
Viewing all articles
Browse latest Browse all 15265

How do i change it to print data instead of writing it to a sd card

$
0
0

Here is the script


#include <SoftwareSerial.h>
#include <Wire.h>    // Bibliothque  pour l'I2C
#include "RTClib.h"  // Bibliothque pour le module RTC
RTC_DS1307  RTC; 
#include <Adafruit_NeoPixel.h>

// Which pin on the Arduino is connected  to the NeoPixels?
#define PIN        6 // On Trinket or Gemma, suggest changing  this to 1

// How many NeoPixels are attached to the Arduino?
#define NUMPIXELS  24 // Popular NeoPixel ring size
Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB  + NEO_KHZ800);
uint32_t vert = pixels.Color(0, 250, 0);
uint32_t orange =  pixels.Color(250, 250, 0);
uint32_t rouge = pixels.Color(255, 0, 0);


SoftwareSerial  pmsSerial(2, 3);
const uint8_t cs = 10;
const uint8_t dc = 9;
const uint8_t rst = 8; // you  can also connect this to the Arduino reset

#include <Adafruit_GFX.h>    //  Core graphics library
#include <Adafruit_ST7735.h> // Hardware-specific library  resolution 128X160

#include <SPI.h>
#include<SD.h>
const int cs_sd=4;
int  temps;                // temps d'acquisition
double tempsInit;         // initialisation  du timer au dmarrage du loop()


#if defined(__SAM3X8E__)
    #undef  __FlashStringHelper::F(string_literal)
    #define F(string_literal) string_literal
#endif

//  Option 1: use any pins but a little slower
//Adafruit_ST7735 tft = Adafruit_ST7735(cs,  dc, mosi, sclk, rst);

// Option 2: must use the hardware SPI pins
// (for  UNO thats sclk = 13 and sid = 11) and pin 10 must be
// an output. This is much  faster - also required if you want
// to use the microSD card (see the image  drawing example)
Adafruit_ST7735 tft = Adafruit_ST7735(cs, dc, rst);
 float  nombre_leds=0;
 int x=2;
void setup() {
Serial.begin(9600);
 // Initialise  la liaison I2C  
  Wire.begin();
 
  // Initialise le module RTC
  RTC.begin();
  
Serial.print("init SD");
  delay(1000);
  if(!SD.begin(cs_sd))    //Condition  vrifiant si la carte SD est prsente dans l'appareil
  {
   Serial.print("Defaut  SD");
    return;
  }
 Serial.print("Carte SD OK");

 File data  = SD.open("donnees.txt",FILE_WRITE);              // Ouvre le fichier "donnees.txt"
  data.println(""); data.println("Dmarrage acquisition");    // Ecrit dans ce  fichier
  data.close();
  
  tft.initR(INITR_GREENTAB);   // initialize  a ST7735S chip, black tab
  Serial.println("init");
  // our debugging output
  
  
tft.fillScreen(ST7735_BLACK);

  // sensor baud rate is 9600
  pmsSerial.begin(9600);

  pixels.begin(); // INITIALIZE NeoPixel strip object  (REQUIRED)
  pixels.setBrightness(2);

  
}

struct pms5003data  {
  uint16_t framelen;
  uint16_t pm10_standard, pm25_standard, pm100_standard;
  uint16_t pm10_env, pm25_env, pm100_env;
  uint16_t particles_03um, particles_05um,  particles_10um, particles_25um, particles_50um, particles_100um;
  uint16_t unused;
  uint16_t checksum;
};

  
  
struct pms5003data data;
    
void  loop()
{
    
  pixels.clear(); // Set all pixel colors to 'off'
  
   DateTime now=RTC.now(); //Rcupre l'heure et le date courante
  
 affiche_date_heure(now);

  
    temps = ((millis() - tempsInit))/1000 ;  // Dmarrage du chrono 



    
  if (readPMSdata(&pmsSerial)) {
     
     
    tft.setCursor(10,  17);
  tft.setTextColor(ST7735_GREEN,ST7735_BLACK);
  tft.setTextSize(1);
  tft.setCursor(10, 29);
  tft.print("0.3 um  ");tft.setTextColor(ST7735_CYAN,ST7735_BLACK);tft.print(data.particles_03um);
  courbe();

tft.setCursor(10, 41);
  tft.setTextColor(ST7735_GREEN,ST7735_BLACK);
  tft.setTextSize(1);
  tft.print("0.5 um  ");tft.setTextColor(ST7735_CYAN,ST7735_BLACK);tft.print(data.particles_05um);

tft.setCursor(10,  53);
  tft.setTextColor(ST7735_GREEN,ST7735_BLACK);
  tft.setTextSize(1);
  tft.print("1.0 um  ");tft.setTextColor(ST7735_CYAN,ST7735_BLACK);tft.print(data.particles_10um);


tft.setCursor(10,  65);
  tft.setTextColor(ST7735_GREEN,ST7735_BLACK);
  tft.setTextSize(1);
  tft.print("2.5 um  ");tft.setTextColor(ST7735_CYAN,ST7735_BLACK);tft.print(data.particles_25um);

tft.setCursor(10,  77);
  tft.setTextColor(ST7735_GREEN,ST7735_BLACK);
  tft.setTextSize(1);
  tft.print("5.0 um  ");tft.setTextColor(ST7735_CYAN,ST7735_BLACK);tft.print(data.particles_50um);

tft.setCursor(10,  89);
  tft.setTextColor(ST7735_GREEN,ST7735_BLACK);
  tft.setTextSize(1);
  tft.print("10.0 um  ");tft.setTextColor(ST7735_CYAN,ST7735_BLACK);tft.print(data.particles_100um);




  tft.setCursor(10, 101);
  tft.setTextColor(ST7735_GREEN,ST7735_BLACK);
  tft.setTextSize(1);
  tft.print("PM 10 ");tft.setTextColor(ST7735_CYAN,ST7735_BLACK);tft.print(data.pm100_standard);tft.setTextColor(ST7735_GREEN,ST7735_BLACK);tft.print("  mic/m3 ");
  
  tft.drawLine(0,113,0,158,ST7735_RED);
  tft.drawLine(0,158,128,158,ST7735_RED);
  
  
    
nombre_leds =int (((float (data.particles_03um)/65535)*24));
//nombre_leds  =(8);
Serial.println (nombre_leds);

     if ((nombre_leds<=8) and (nombre_leds>=1)){
  pixels.fill(vert , 0, nombre_leds);
    
    }
    
    else if ((nombre_leds<=16)  and (nombre_leds>=8)) {
      pixels.fill(vert , 0, 8);
      pixels.fill(orange  , 8, ((nombre_leds)-8));
      
    }
    else if  (nombre_leds>16) {

      
      pixels.fill(vert , 0, 8);
      pixels.fill(orange , 8, 8);
      pixels.fill(rouge , 16, ((nombre_leds)-16));
    }
    else  if (nombre_leds<=1)  {
      pixels.fill(vert , 0, 1);
    }
    pixels.show();   // Send the  updated pixel colors to the hardware.

    
    
  // Dfinition donnes
  String PM03=String(data.particles_03um);
  String PM05=String(data.particles_05um);
  String PM10=String(data.particles_10um);
  String PM25=String(data.particles_25um);
  String PM50=String(data.particles_50um);
  String PM100=String(data.particles_100um);
  String PMS10=String(data.pm10_standard);
  String PMS25=String(data.pm25_standard);
  String PMS100=String(data.pm100_standard);
 
  
  
  String Temps=String(temps);

   //Ecriture des donnes dans le fichier texte
  File data=SD.open("donnees.txt",FILE_WRITE);
  data.println( Temps + " " + PM03+ " " + PM05 +" " +PM10+" " +PM25+" "+PM50+"  " +PM100+" "+PMS10+" "+PMS25+" "+PMS100+" "); 
  data.close();
  
  }

  
}

boolean readPMSdata(Stream *s) {
  if (! s->available())  {
    return false;
  }
  
  // Read a byte at a time until we get to  the special '0x42' start-byte
  if (s->peek() != 0x42) {
    s->read();
    return false;
  }

  // Now read all 32 bytes
  if (s->available()  < 32) {
    return false;
  }
    
  uint8_t buffer[32];    
  uint16_t  sum = 0;
  s->readBytes(buffer, 32);

  // get checksum ready
  for  (uint8_t i=0; i<30; i++) {
    sum += buffer[i];
  }

  
  
  //  The data comes in endian'd, this solves it so it works on all platforms
  uint16_t  buffer_u16[15];
  for (uint8_t i=0; i<15; i++) {
    buffer_u16[i] = buffer[2  + i*2 + 1];
    buffer_u16[i] += (buffer[2 + i*2] << 8);
  }

  // put  it into a nice struct :)
  memcpy((void *)&data, (void *)buffer_u16, 30);

  if (sum != data.checksum) {
    Serial.println("Checksum failure");
    return  false;
    
  }
  // success!
  return true;
   
}

//Converti  le numro de jour en jour /!\la semaine commence un dimanche
String donne_jour_semaine(uint8_t  j){ 
  switch(j){
   case 0: return "DIM";
   case 1: return "LUN";
   case 2: return "MAR";
   case 3: return "MER";
   case 4: return "JEU";
   case 5: return "VEN";
   case 6: return "SAM";
   default: return "   ";
  }
}

// affiche la date et l'heure sur l'cran
void affiche_date_heure(DateTime  datetime){
  
  // Date 
  String jour = donne_jour_semaine(datetime.dayOfTheWeek())  + " " + 
                Vers2Chiffres(datetime.day())+ "/" + 
                Vers2Chiffres(datetime.month())+  "/" + 
                String(datetime.year(),DEC);
  
  // heure
  String heure = "";
  heure  = Vers2Chiffres(datetime.hour())+ ":" + 
           Vers2Chiffres(datetime.minute())+ ":" + 
           Vers2Chiffres(datetime.second());

           

  
  
  File data=SD.open("donnees.txt",FILE_WRITE);
  data.print(jour + " " + heure+" " ); 
  data.close();

  tft.setCursor(18,  5);
 tft.setTextColor(ST7735_GREEN,ST7735_BLACK);
  tft.setTextSize(1);
  tft.setTextColor(ST7735_CYAN,ST7735_BLACK);tft.print(jour);
  tft.setCursor(30,  17);tft.setTextColor(ST7735_CYAN,ST7735_BLACK);tft.print(heure);

  
}

//permet  d'afficher les nombres sur deux chiffres
String Vers2Chiffres(byte nombre) {
  String resultat = "";
  if(nombre < 10)
    resultat = "0";
  return  resultat += String(nombre,DEC);  
}

void courbe() {


  int nouvelleValeur03;
  int nouvelleValeur05;
  int nouvelleValeur10;
  int nouvelleValeur25;
  int nouvelleValeur50;
  
  
  nouvelleValeur03 = map((data.particles_03um),  2, 65535, 158, 113); 
  nouvelleValeur05 = map((data.particles_05um), 2, 65535,  158, 113);
  nouvelleValeur10 = map((data.particles_10um), 2, 65535, 158, 113);
  nouvelleValeur25 = map((data.particles_25um), 2, 65535, 158, 113);
  nouvelleValeur50  = map((data.particles_50um), 2, 65535, 158, 113);
  
  x++;
  
  tft.drawPixel(x,nouvelleValeur03,ST7735_CYAN);
  tft.drawPixel(x,nouvelleValeur05,ST7735_YELLOW);
  tft.drawPixel(x,nouvelleValeur10,ST7735_RED);
    tft.drawPixel(x,nouvelleValeur25,ST7735_WHITE);
    tft.drawPixel(x,nouvelleValeur50,ST7735_BLUE);
  
  if (x>123) {
    x=2;
    tft.fillRect(2,113,126,45,ST7735_BLACK);
    
  }
}


How do i make it print data? I don't have a sd card or a part where i can insert one.

3 posts - 3 participants

Read full topic


Viewing all articles
Browse latest Browse all 15265

Trending Articles