pleasedontcode

**Color Sensor** rev_01

Feb 25th, 2025
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /********* Pleasedontcode.com **********
  2.  
  3.     Pleasedontcode thanks you for automatic code generation! Enjoy your code!
  4.  
  5.     - Terms and Conditions:
  6.     You have a non-exclusive, revocable, worldwide, royalty-free license
  7.     for personal and commercial use. Attribution is optional; modifications
  8.     are allowed, but you're responsible for code maintenance. We're not
  9.     liable for any loss or damage. For full terms,
  10.     please visit pleasedontcode.com/termsandconditions.
  11.  
  12.     - Project: **Color Sensor**
  13.     - Source Code NOT compiled for: Arduino Uno
  14.     - Source Code created on: 2025-02-25 15:32:04
  15.  
  16. ********* Pleasedontcode.com **********/
  17.  
  18. /****** SYSTEM REQUIREMENTS *****/
  19. /****** SYSTEM REQUIREMENT 1 *****/
  20.     /* It should write the name of the red, yellow or */
  21.     /* black colors detected by my color sensor on the */
  22.     /* screen, but in Turkish. */
  23. /****** END SYSTEM REQUIREMENTS *****/
  24.  
  25. /* START CODE */
  26.  
  27. /****** DEFINITION OF LIBRARIES *****/
  28. #include <Adafruit_GFX.h>    // Core graphics library
  29. #include <Adafruit_ST7735.h> // Hardware-specific library for ST7735
  30. #include <SPI.h>
  31. #include <limits.h> // INT_MAX için gerekli kütüphane
  32.  
  33. /****** FUNCTION PROTOTYPES *****/
  34. void setup(void);
  35. void loop(void);
  36. int readColor(int color);
  37. void learnColors();
  38. void waitForEnter();
  39. const char* recognizeColor(int red, int green, int blue);
  40.  
  41. /****** DEFINITION OF LIBRARIES CLASS INSTANCES*****/
  42. #define TFT_CS   10
  43. #define TFT_DC   9
  44. #define TFT_RST  8
  45. #define S0 2
  46. #define S1 3
  47. #define S2 4
  48. #define S3 5
  49. #define OUT 6
  50.  
  51. Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_RST);
  52.  
  53. // Renk yapısı
  54. struct Color {
  55.   int red;
  56.   int green;
  57.   int blue;
  58.   const char* name;
  59. };
  60.  
  61. // Ezberlenen renkler
  62. Color learnedColors[3]; // Kırmızı, Sarı, Siyah için 3 renk
  63. int learnedColorCount = 0;
  64.  
  65. void setup(void)
  66. {
  67.   // put your setup code here, to run once:
  68.   Serial.begin(9600);  // Seri iletişimi başlat
  69.   tft.initR(INITR_BLACKTAB); // ST7735S chip, black tab
  70.   tft.fillScreen(ST7735_BLACK);
  71.   tft.setTextColor(ST7735_WHITE);
  72.   tft.setTextSize(1);
  73.  
  74.   // TCS3200 pinlerini ayarla
  75.   pinMode(S0, OUTPUT);
  76.   pinMode(S1, OUTPUT);
  77.   pinMode(S2, OUTPUT);
  78.   pinMode(S3, OUTPUT);
  79.   pinMode(OUT, INPUT);
  80.  
  81.   // TCS3200 frekans ölçekleme ayarı (20% frekans ölçekleme)
  82.   digitalWrite(S0, HIGH);
  83.   digitalWrite(S1, LOW);
  84.  
  85.   // Renkleri öğren
  86.   learnColors();
  87. }
  88.  
  89. void loop(void)
  90. {
  91.   // Renkleri oku
  92.   int red = readColor(2);   // Kırmızı renk
  93.   int green = readColor(1); // Yeşil renk
  94.   int blue = readColor(0);  // Mavi renk
  95.  
  96.   // Renk ismini belirle
  97.   const char* colorName = recognizeColor(red, green, blue);
  98.  
  99.   // Renk değerlerini ve ismini Serial Monitor'e yazdır
  100.   Serial.print("Red: ");
  101.   Serial.print(red);
  102.   Serial.print(" | Green: ");
  103.   Serial.print(green);
  104.   Serial.print(" | Blue: ");
  105.   Serial.print(blue);
  106.   Serial.print(" | Renk: ");
  107.   Serial.println(colorName);
  108.  
  109.   // Renk ismini TFT ekranda göster
  110.   tft.fillScreen(ST7735_BLACK);
  111.   tft.setCursor(10, 10);
  112.   tft.print("Renk: ");
  113.   tft.println(colorName);
  114.   delay(1000); // 1 saniye bekle
  115. }
  116.  
  117. int readColor(int color) {
  118.   // Renk filtrelerini ayarla
  119.   digitalWrite(S2, (color >> 1) & 0x01); // Bit manipülasyonu
  120.   digitalWrite(S3, color & 0x01);
  121.  
  122.   // Frekans ölçümü
  123.   delay(50); // Kararlılık için bekle
  124.   return pulseIn(OUT, LOW); // LOW pals süresi
  125. }
  126.  
  127. void learnColors() {
  128.   Serial.println("Renk ogrenme modu...");
  129.  
  130.   // Kırmızı rengi öğren
  131.   Serial.println("Kirmizi renge tutun ve ENTER tusuna basin...");
  132.   waitForEnter();
  133.   learnedColors[0] = {readColor(2), readColor(1), readColor(0), "Kırmızı"}; // Struct initialization fixed
  134.   learnedColorCount++;
  135.   Serial.println("Kirmizi renk ogrenildi!");
  136.  
  137.   // Sarı rengi öğren
  138.   Serial.println("Sari renge tutun ve ENTER tusuna basin...");
  139.   waitForEnter();
  140.   learnedColors[1] = {readColor(2), readColor(1), readColor(0), "Sarı"}; // Struct initialization fixed
  141.   learnedColorCount++;
  142.   Serial.println("Sari renk ogrenildi!");
  143.  
  144.   // Siyah rengi öğren
  145.   Serial.println("Siyah renge tutun ve ENTER tusuna basin...");
  146.   waitForEnter();
  147.   learnedColors[2] = {readColor(2), readColor(1), readColor(0), "Siyah"}; // Struct initialization fixed
  148.   learnedColorCount++;
  149.   Serial.println("Siyah renk ogrenildi!");
  150.   Serial.println("Renk ogrenme tamamlandi!");
  151. }
  152.  
  153. void waitForEnter() {
  154.   while (true) {
  155.     if (Serial.available() > 0) {
  156.       char input = Serial.read();
  157.       if (input == '\n' || input == '\r') { // Enter tuşu algılandı
  158.         break;
  159.       }
  160.     }
  161.   }
  162. }
  163.  
  164. const char* recognizeColor(int red, int green, int blue) {
  165.   // Öğrenilen renkler arasında en yakın olanı bul
  166.   int minDistance = INT_MAX; // INT_MAX artık tanımlı
  167.   const char* closestColor = "Bilinmeyen";
  168.  
  169.   for (int i = 0; i < learnedColorCount; i++) {
  170.     int distance = abs(red - learnedColors[i].red) +
  171.                    abs(green - learnedColors[i].green) +
  172.                    abs(blue - learnedColors[i].blue);
  173.     if (distance < minDistance) {
  174.       minDistance = distance;
  175.       closestColor = learnedColors[i].name;
  176.     }
  177.   }
  178.   return closestColor;
  179. }
  180.  
  181. /* END CODE */
Add Comment
Please, Sign In to add comment