#1 2017-02-11 00:19:18

Владисл@в
Учасник
Зареєстрований: 2016-08-18
Повідомлень: 11

Датчик кольору

Є два скетча. Перший працює задовільно. Другий - ні.
Другий відповідає за роботу датчика кольору.
Перший поєднання першого,однак з записом на Sd картку.

Проблема: внаслідок роботи другого скетчу дані кольору повинні зберігатися на картку,однак зберігаться лише 000.
Допоможіть....

#include <Timer.h>
#include <SPI.h>//
#include <SD.h>
#include <DS3231.h>
#include <Wire.h>
Timer timer; 
Timer t; 
File myFile;
const uint8_t PIN_CS = 4;                         // указываем номер вывода arduino подключенного к выводу CS адаптера
DS3231 Clock;



bool Century = false;
bool h12;
bool PM;
byte year, month, date, DoW, hour, minute, second;

int s0 = 8; 
int s1 = 9; 
int s2 = 2; 
int s3 = 7; 
int out = 10; 
int red ; 
int green ; 
int blue ; 

void setup() { 
  
  Wire.begin();// Start the I2C interface
 pinMode(s0, OUTPUT); 
 pinMode(s1, OUTPUT); 
 pinMode(s2, OUTPUT); 
 pinMode(s3, OUTPUT); 
 pinMode(out, INPUT); 
 Serial.begin(9600); 
 digitalWrite(s0, HIGH); 
 digitalWrite(s1, HIGH); 

 while (!Serial) {
    ; 
  }

  timer.every(60000, tr);
  
  if (!SD.begin(PIN_CS)) {                         
    Serial.println("SD-card not found"); return;   
  
   
  }  
}
  void loop() {
  
  color(); 
  Serial.print(" RED :" + String(red)); 
 Serial.print(" GREEN : " + String(green)); 
 Serial.println(" BLUE : " + String(blue)); 
  //Serial.println();  
  
  int second, minute, hour, date, month, year, temperature;
  second = Clock.getSecond();
  minute = Clock.getMinute();
  hour = Clock.getHour(h12, PM);
  date = Clock.getDate();
  month = Clock.getMonth(Century);
  year = Clock.getYear();
  temperature = Clock.getTemperature();
 
timer.update();
  
  delay(1000);

}

void color() 
{ 
 // если 11 и 12 порты отключить, то мы получим красный цвет
 digitalWrite(s2, LOW); 
 digitalWrite(s3, LOW); 
 red = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH); 
 // если 11 порт включить, а 12 отключить, то синий
 digitalWrite(s3, HIGH); 
 blue = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH); 
 // если 12 включить, а 11 отключить, то зеленый
 digitalWrite(s2, HIGH); 
 green = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH); 
}

void tr ()
{
  String filename;
  static int number;
   int i = 0;
  filename = "file_";
    filename +=  number++;
    filename += ".txt";
  //Serial.println(filename);

  File myFile = SD.open(filename, FILE_WRITE );
  do {
      //Serial.println(filename); 
  myFile.print("20");               
  myFile.print(Clock.getYear(), DEC); 
  myFile.print('-');
  myFile.print(Clock.getMonth(Century), DEC);
  myFile.print('-');
  myFile.print(Clock.getDate(), DEC);
  myFile.print(' ');
  myFile.print(Clock.getHour(h12, PM), DEC);
  myFile.print(':');
  myFile.print(Clock.getMinute(), DEC);
  myFile.print(':');
  myFile.print(Clock.getSecond(), DEC);
  myFile.print(' ');

  myFile.print("R Intensity:");  
  myFile.print(255-red, DEC);  
 myFile.print(" G Intensity: ");  
  myFile.print(255-green, DEC);  
 myFile.print(" B Intensity : ");  
  myFile.println(255-blue, DEC); 
  delay(1000);
  i++;
  } while (i<60);
  do {
   i=i-i; 
    }while ( i = 0);
    myFile.close();  // закрытие файла "iarduino.txt":
}
int s0 = 8; 
int s1 = 9; 
int s2 = 2; 
int s3 = 7; 
int out = 10; 
int red = 0; 
int green = 0; 
int blue = 0; 
 
void setup() 
{ 
 pinMode(s0, OUTPUT); 
 pinMode(s1, OUTPUT); 
 pinMode(s2, OUTPUT); 
 pinMode(s3, OUTPUT); 
 pinMode(out, INPUT); 
 Serial.begin(9600); 
 digitalWrite(s0, HIGH); 
 digitalWrite(s1, HIGH); 
} 
 
void loop() 
{ 
 color();
 // выводим значения цветов
 Serial.print(" RED :" + String(red)); 
 Serial.print(" GREEN : " + String(green)); 
 Serial.println(" BLUE : " + String(blue)); 
 delay(500); 
} 
 
void color() 
{ 
 // если 11 и 12 порты отключить, то мы получим красный цвет
 digitalWrite(s2, LOW); 
 digitalWrite(s3, LOW); 
 red = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH); 
 // если 11 порт включить, а 12 отключить, то синий
 digitalWrite(s3, HIGH); 
 blue = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH); 
 // если 12 включить, а 11 отключить, то зеленый
 digitalWrite(s2, HIGH); 
 green = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH); 
}

Неактивний

#2 2021-02-03 14:37:59

Nik 88
Гість

Re: Датчик кольору

Доброго дня. Хто працює з датчиками визначення кольору? Відгукніться. Є декілька запитань по роботі датчика. Дякую.

Швидке повідомлення

Введіть повідомлення і натисніть Надіслати

Підвал форуму