Katse 5 LED

LCD Ekraan

skeem:

Katse 5 LED

Komponendid:

  1. Arduino Uno
  2. LCD Ekraan
  3. Fotoristor
  4. Arendusplaat
  5. 220Ω takisti
  6. Juhtmed

Mida skeem teeb?:

see on lihtne animatsioon 10-sekundilises tsüklis. See toimib nii, et konkreetsed pikslid lülitatakse sisse või välja. Kokkuvõttes: on võimalus näidata LED-ekraanil mida iganes soovite.

KATSE 5:

Töö kirjeldus:

see on temperatuuriandur aia jaoks, see annab välja uudiseid temperatursist

Asutatud komponendid:

  1. Arduino Uno
  2. TMP36 temperatuuriandur
  3. Fototakisti
  4. 10 kΩ takisti
  5. 2 x 220 Ω takisti
  6. 16×2 LCD-ekraan
  7. Ühenduskaablid
  8. Arendusplaat
  9. :3

Töö protsess:

see on LCD-ekraan, mis näitab iga 2 sekundi järel temperatuuri ja valguse olekut. See töötab nii, et sellel on nimekiri piltidest, mida näidatakse koos konkreetse väärtusega. Sellel on temperatuuri sensor ja fotoresistor. Nende abil annab LCD-ekraan teavet. Täpsemalt öeldes: Ekraan on kahes reas – tekst koos ikooniga ülemises reas, temperatuur ja kellaaeg alumises reas – ning iga viienda läbimise järel asendub tavaline vaade reklaamiaknaga.
Töö on tehtud koos minu sõbra Maksimiga.

Skeem:

Kood:

#include <LiquidCrystal.h>

LiquidCrystal lcd(2, 3, 5, 6, 7, 8);
const int TEMP_PIN = A0, LDR_PIN = A1;
bool toggleVariant = false;
int lastIdx        = -1;  // eelmise sõnumi indeks

// Eemalda 'const' – nüüd on õige tüüp uint8_t*
byte icons[5][8] = {
  {0b00100,0b10101,0b01110,0b11111,0b01110,0b10101,0b00100,0b00000},
  {0,0b00110,0b01111,0b11111,0b11111,0b00000,0,0},
  {0b00110,0b01111,0b11111,0b00100,0b01010,0b10001,0,0},
  {0b01110,0b10101,0b11011,0b00100,0b11011,0b10101,0b01110,0},
  {0,0b01010,0b11111,0b11111,0b01110,0b00100,0,0}
};

const char* msgs[5] = {
  "Selge taevas",
  "Pilvine ilm",
  "Vihm varitseb",
  "Lumi langeb",
  "Armasta ilma"
};

const char* alts[5] = {
  "Taevas puhas",
  "Pilv katmas",
  "Tibutab vett",
  "Karge lumi",
  "Naudi ilma"
};

float readTemp() {
  float v = analogRead(TEMP_PIN) * (5.0 / 1023.0);
  return (v - 0.5) * 100.0;
}

int readLdr() {
  return analogRead(LDR_PIN);
}
int frameCount = 0;
void setup() {
  lcd.begin(16, 2);
  for (int i = 0; i < 5; i++) {
    lcd.createChar(i, icons[i]);
  }
  lcd.setCursor(0, 0);
  lcd.print("IlmaNurk");
  delay(2000);
  lcd.clear();
  Serial.begin(9600);
}

void loop() {
  frameCount++;
  // Iga 5. iteratsiooni järel näita reklaami
  if (frameCount >= 5) {
    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print("IlmaNurk soovitab");
    lcd.setCursor(0, 1);
    lcd.print("Joo teed! :)");
    delay(3000);
    frameCount = 0;
    return;
  }
  float t = readTemp();
  int l = readLdr();
  int idx = (l > 800) ? 4 : (t > 25) ? 0 : (t < 0) ? 3 : (l < 300) ? 2 : 1;
  
  if (idx != lastIdx) {
    lastIdx = idx;
    toggleVariant = false;
  }

  // vali kas peamine või variant
  const char* txt = toggleVariant ? alts[idx] : msgs[idx];
  toggleVariant = !toggleVariant;
  
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print(txt);
  lcd.setCursor(15, 0);
  lcd.write(idx);

  lcd.setCursor(0, 1);
  lcd.print("T:");
  lcd.print(t, 1);
  lcd.print("C S:");
  lcd.print(millis() / 1000);
  
  Serial.print("Temp: ");
  Serial.print(t, 1);
  Serial.print(" C, Light: ");
  Serial.print(analogRead(LDR_PIN));
  Serial.print(", Index: ");
  Serial.println(idx);
  delay(2000);
}

Video:

Uued funktsioonid:

LiquidCrystal lcd() – konstrueerib objekti, mille kaudu juhitakse LCD-ekraani.
lcd.begin(cols, rows) – initsialiseerib ekraani mõõtude (cols × rows) jaoks.
lcd.setCursor(x, y) – seab kursori veeru x ja rea y positsiooni.
lcd.print(tekst) – kuvab ekraanil mustri kursoripositsioonist alates (C-string või arv).
const char* – tüübimääre, mis osutab muutumatule C-stringile (tekstile).
byte icons[5][8] = {} – defineerib massiivi, kuhu salvestatakse 5 kohandatud 8-baiti pikkust ikooni.
lcd.write(indeks) – kuvab ekraanil kohandatud sümbolit salvestatud indeksiga.
lcd.clear() – tühjendab kogu ekraani sisu ja liigub kursoriga algusse.

Katse 4 temperatuur

Näidis 1:

Katse 4

see on temperatuurianduri test. Siin pildil on näide, kuidas ühendada juhtmed temperatuurianduriga.
See on saanud võimaluse näidata, milline on temperatuur.

kood:

const int temperaturePin = 0;

void setup()
{
Serial.begin(9600);
}

void loop()
{

float voltage, degreesC, degreesF;
// kasutame analogRead(), mis tagastab sisendi väärtused vahemikul 0 ... 1023.
// koostasime getVoltage() funktsioon, mis tagastab pingeväärtus  0 ... 5,

voltage = getVoltage(temperaturePin);
degreesC = (voltage - 0.5) * 100.0;
// degreesC = voltage * 100.0;
degreesF = degreesC * (9.0/5.0) + 32.0;
Serial.print("voltage: ");
Serial.print(voltage);
Serial.print(" deg C: ");
Serial.print(degreesC);
Serial.print(" deg F: ");
Serial.println(degreesF);


//Ekraanil ilmub järgmine tekst: "voltage: 0.73 deg C: 22.75 deg F: 72.96"
delay(1000); // ootame 1 sek
}

float getVoltage(int pin)
{
return (analogRead(pin) * 0.004882814);
// teisendame pinge vahemikust 0,0 ... 5,0 V, vahemikku 0 до 1023.
}

Näidis 2:

Selles osas on servomootor. Servomootor on pöörlev või lineaarne ajam, mis võimaldab mehaanilises süsteemis nurk- või lineaarpositsiooni, kiiruse ja kiirenduse täpset juhtimist. See moodustab servomehhanismi osa ja koosneb sobivast mootorist, mis on ühendatud asendi tagasiside anduriga ja kontrolleriga. temperatuur

kood:

#include  <Servo.h> // nii teavitame Arduino IDE-t vajadusest kasutada Servo.h teeki (подключаем дополнительную библиотеку)
// Как только вы "подключаете" библиотеку, так сразу получаете доступ к этим функциям. Вы можете найти список функций в библиотеке
// сервопривода в: http://arduino.cc/en/Reference/Servo. Большинство библиотек доступно из меню "Файл / примеры".

Servo servo1; // Peame looma servo objekti nimega servo1 (объект управления сервоприводом)

void setup()
{
// Сейчас мы прикрепим (attach) объект servo1 к цифровому пину 9. Если вы собираетесь управлять более чем одним
// сервоприводом, Вы должны прикрепить каждый новый объект серво к своему, отдельному порту, причем это порт должен быть цифровым.
servo1.attach(9); //ütleme Arduinole, et infosuhtlus servo-objektiga servo käib läbi klemmi number 9. Tegu on digitaal-klemmiga--PWM digitaalne osa! Kontrollime, kas skeemil kasutame sama klemmi.
}
void loop()
{
int position;

servo1.write(90); //pööramise nurk =90
delay(1000); 
servo1.write(180); //pööramise nurk =180
delay(1000);
servo1.write(0); //pööramise nurk =0
delay(1000);

// servo positsiooni muutmine väike kiirusega pärisuunas:
for(position = 0; position < 180; position += 2)
{
servo1.write(position); // positsiooni muutmine
delay(20); 
}

// servo positsiooni muutmine väike kiirusega vastupäeva:
for(position = 180; position >= 0; position -= 1)
{ 
servo1.write(position); // positsiooni muutmine
delay(20); 
}
}

KATSE 4:

Töö kirjeldus:

Öövalgustuse loomine: lülitub sisse, kui on pime, lülitub välja, kui on valgus

Kasutatud komponendid:

Arduino Uno R3,

Positional Micro Servo,

White LED 3 tükki,

220 Ω Resistor 3 tükki,

Photoresistor,

10 kΩ Resistor

Töö protsess:

mulle ja mu sõbrale Maksimile tehti ülesandeks teha „nutikas aed“ (ma ei osanud seda lihtsamalt nimetada). Seal on süsteem, mis avab akna, kui ruumis on liiga kuum (me lihtsalt panime käe soojusandurile) ja kui on liiga pime, siis töötavad tuled.

Skeem:

Kood:

#include <Servo.h>

const int tempPin = A0;       // Temperatuuriandur (LM35, TMP36 jne)
const int ldrPin = A1;        // Fototakisti (LDR)
const int ledPin = 10;         // LEDi digitaalne väljund
const int servoPin = 9;       // Servo mootor SG90

Servo servo;
int currentAngle = 0;

void setup() {
  servo.attach(servoPin);
  pinMode(ledPin, OUTPUT);
  Serial.begin(9600);
}

void loop() {
  // --- Temperatuuri lugemine ja teisendamine kraadideks ---
  int tempValue = analogRead(tempPin);
  float voltage = tempValue * (5.0 / 1023.0);
  float temperature = (voltage - 0.5) * 100.0; // TMP36 puhul

  // --- Servonurga määramine temperatuuri põhjal ---
  int targetAngle;
  if (temperature <= 25) {
    targetAngle = 0;
  } else {
    targetAngle = 180;
  }

  // --- Servo liigutamine sujuvalt ---
  if (currentAngle < targetAngle) {
    currentAngle += 3; // bigger step
    if (currentAngle > targetAngle) currentAngle = targetAngle;
  } else if (currentAngle > targetAngle) {
    currentAngle -= 3;
    if (currentAngle < targetAngle) currentAngle = targetAngle;
  }
  servo.write(currentAngle);
  delay(20); // sujuv liikumine

  // --- Valgustaseme lugemine ja LEDi juhtimine ---
  int lightLevel = analogRead(ldrPin);
  if (lightLevel > 500) {
    digitalWrite(ledPin, HIGH); // LED süttib, kui on pime
  } else {
    digitalWrite(ledPin, LOW);  // LED kustub, kui valgust piisavalt
  }

  // --- Andmete näitamine Serial Monitoris ---
  Serial.print("Temp: ");
  Serial.print(temperature);
  Serial.print(" C, Light: ");
  Serial.print(lightLevel);
  Serial.print(", Servo angle: ");
  Serial.println(currentAngle);
}

Video:

Uued funktsioonid:

Servo servo – Loob servo objekti.
servo.attach(pin) – Seob servomootori määratud piniga
#include <Servo.h> – Lisab servo raamatukogu.
servo.write(angle); – Liigutab servo määratud nurka (0–180°).
float – koma numbrid

Katse 3

Ülesanne nuppudega

skeem:

kirjeldus:

Meil on kaks nuppu, millest üks vastutab lambi sisselülitamise eest ja teine on vastutav selle väljalülitamise eest. Peamine adea on see, et siis kasutaja tahab valgust või mitte

kood:

const int button1Pin = 2;  //viik kunu on ühebdatud nupp1

const int button2Pin = 3; //viik kuhu on ühendatud nupp2

const int ledPin =  13;   

void setup()

{

  pinMode(button1Pin, INPUT); //algväärtuse nupu viigu sisendiks

  pinMode(button2Pin, INPUT); //algväärtuse nupu viigu sisendiks

  pinMode(ledPin, OUTPUT);   //algväärtuse LED viigu väljundiks
 

}

void loop()

{

  int button1State, button2State;  //nupu oleku muutujad

  button1State = digitalRead(button1Pin);// salvestame muutujasse nupu hetke väärtuse(HIGH või LOW)

  button2State = digitalRead(button2Pin);

  if (((button1State == LOW) || (button2State == LOW))   // kui nupu on alla vajutatud

      && !

      ((button1State == LOW) && (button2State == LOW))) // kui nupude on alla vajutatud

  {

    digitalWrite(ledPin, HIGH);  // lülitame LED sisse

  }

  else                          

  {

    digitalWrite(ledPin, LOW);  // lülitame LED välja

  }    	

  }

Ülesanne Photoresistoriga

skeem:

kirjeldus

siin on fotoresistor. Fotoresistori kasutatakse ddedektorit valguse ja teha midagi, siis on see tume või valgus. Siin töötab fotoresistor nii: kui on pime, siis süttib lamp, kui on pime, siis lülitab lamp välja.

kood:

const int sensorPin = 0;

const int ledPin = 9;

int lightLevel, high = 0, low = 1023; 

void setup()

{

  pinMode(ledPin, OUTPUT);

  Serial.begin(9600); // //Serial monitori seadistamine

}

void loop()

{

  // AnalogRead() kasutab väärtused vahemikus 0 (0 вольт) и 1023 (5 вольт).

  // AnalogWrite(),  kasutatakse, et LEDi sujuvalt sisselülitada 0(ei põle) kuni 255(põleb maksimalselt).
  lightLevel = analogRead(sensorPin); //loeme mõõdetud analoogväärtuse

  // Map() teisendab sisendi väärtused ühest vahemikust teisse. Näiteks, "from" 0-1023 "to" 0-255.

  // Constrain() saed muutujale kindlad piirväärtused.

  // Näiteks:  kui constrain() kohtub arvudega 1024, 1025, 1026.., siis ta teisendab need 1023, 1023, 1023..). Kui arvud vähem kui 0, siis teisendab need 0:. 

  // lightLevel = constrain(lightLevel, 0, 255);

  manualTune();  //

  //autoTune();  //

  analogWrite(ledPin, lightLevel);

  // Выражение выше, будет изменять яркость светодиода вместе с уровнем освещенности. Чтобы сделать наоборот, заменить в analogWrite(ledPin, lightLevel) "lightLevel" на "255-lightLevel". Теперь у нас получился ночник!

  Serial.print(lightLevel);     // prindime tulemused Serial Monitori (вывод данных с фоторезистора (0-1023))

  Serial.println("");          

  delay(1000);                

}

void manualTune()

{

  lightLevel = map(lightLevel, 300, 800, 0, 255); // kaardistame selle analoogväljundi vahemikku (будет от 300 темно, до 800 (светло)). 

  lightLevel = constrain(lightLevel, 0, 255);

} 

void autoTune()

{

   if (lightLevel < low)  

  {                      

    low = lightLevel;   

  }

  if (lightLevel > high)

  {

    high = lightLevel;

  }

  lightLevel = map(lightLevel, low+10, high-30, 0, 255);

  lightLevel = constrain(lightLevel, 0, 255);

katse 3

skeem:

Töö kirjeldus:

öövalgustus kahe režiimiga: päevarežiim ja öörežiim

Kasutatud komponendid:

  • Arduino Uno
  • 3x ledid
  • Fotoristor
  • Arendusplaat
  • 3x 220kΩ takistit
  • 1x 10kΩ takisti
  • 8x Juhtme

Töö protsess:

see öine valgus töötab koosneb 3 ledist, mõnest resistrsist ja fotorestorist. Põhiidee on see, et lambid põlevad siis, kui on pime, ja lülituvad välja siis, kui on pime.

kood:

const int ldrPin = A1;      // Photoresistor (LDR) connected to A1
const int ledPin1 = 10;     // LED 1 (Digital)
const int ledPin2 = 11;     // LED 2 (Digital)
const int ledPin3 = 12;     // LED 3 (PWM for brightness)

void setup() {
  pinMode(ledPin1, OUTPUT);
  pinMode(ledPin2, OUTPUT);
  pinMode(ledPin3, OUTPUT);
  Serial.begin(9600);  // Start serial communication
}

void loop() {
  // Read light level from LDR (0 = bright, 1023 = dark)
  int lightLevel = analogRead(ldrPin);

  // --- Control LED 1 (ON in complete darkness) ---
  if (lightLevel > 800) {
    digitalWrite(ledPin1, HIGH);  // Turn ON LED 1
  } else {
    digitalWrite(ledPin1, LOW);   // Turn OFF LED 1
  }

  // --- Control LED 2 (ON in moderate darkness) ---
  if (lightLevel > 500) {
    digitalWrite(ledPin2, HIGH);  // Turn ON LED 2
  } else {
    digitalWrite(ledPin2, LOW);   // Turn OFF LED 2
  }

  // --- Control LED 3 (PWM brightness, dim when dark) ---
  // Map LDR reading (200-800) to PWM brightness (0-255)
  int brightness = map(lightLevel, 200, 800, 0, 255);
  brightness = constrain(brightness, 0, 255);  // Limit to 0-255
  analogWrite(ledPin3, brightness);  // Set LED 3 brightness

  // Print light level to Serial Monitor
  Serial.print("Light Level: ");
  Serial.println(lightLevel);

  delay(100);  // Small delay for stability
}

Uued funktsioonid:

if (lightLevel > lightThreshold) – Kui valgustase on suurem kui läviväärtus, siis täidetakse esimene koodiblokk.

Video:

Uued funktsioonid:

if (lightLevel > lightThreshold) – Kui valgustase on suurem kui läviväärtus, siis täidetakse esimene koodiblokk.

Katse 2

Peamine ülesanne:

Mulle ja minu partnerile Maksimile tehti ülesandeks luua valguskett

Asjad, mida me vajasime ja kasutasime:

Arendusplaat (Arendusplaat pakub kõike vajalikku mikrokontrolleriga mugavaks töötamiseks),

4x RGB-LED (LED-moodul, mis suudab toota peaaegu kõiki värve, kasutades neid kolme peamist lisavärvi: Punane, roheline ja sinine),

12x 220 (OM) resistorit (Takisti on passiivne kahetermiline elektrooniline komponent, mis rakendab elektritakistust vooluahela elemendina),

1x 10k(OM) potenrsiomeeter (Potentsiomeeter on käsitsi reguleeritav muutuvtakisti, millel on 3 klemmi),

Juhtmed ühenduste loomiseks (juht lihtsalt liigutab elektrit),

Makettplaat komponentide paigutamiseks (Makettplaat koosneb elektrit mitte juhtivast plaadist)

Ühendamise skeem:

Meie lampidel on erinevad režiimid ja need on määratud potentsoimeetri pöörlemisega.

Sisekood:

// RGB-LED-ide ühendused
const int RGB_PINS[4][3] = {
  {13, 5, 9},   // LED 1: R, G, B
  {12, 4, 8},   // LED 2
  {11, 3, 7},   // LED 3
  {10, 2, 6}    // LED 4
};

see osa kirjandus ütleb meile, et traat on ühendatud nendes kohtades. See on näha pildil.

const int POT_PIN = A0;  // Potentsiomeeter

void setup() {
  // kõik LED-ide pinnid
  for (int i = 0; i < 4; i++) {
    for (int j = 0; j < 3; j++) {
      pinMode(RGB_PINS[i][j], OUTPUT);
    }
  }
  Serial.begin(9600);
}

void loop() {
  int potValue = analogRead(POT_PIN);
  int mode = map(potValue, 0, 1023, 1, 5);
  mode = constrain(mode, 1, 5);

  Serial.print("Reziim: ");
  Serial.println(mode);

  switch (mode) {
    case 1: allOn(); break;
    case 2: waveEffect(); break;
    case 3: colorCycle(); break;
    case 4: redYellowAlternate(); break;
    case 5: discoEffect(); break;
  }
}

paneb potentsiomeetri seaded ja režiimid

// REŽIIMID

// 1. Kõik LED-id valged
void allOn() {
  // Valged LED-id
  setColor(0, 255, 255, 153);
  setColor(1, 255, 255, 255);
  // Sinised LED-id
  setColor(2, 255, 255, 255);
  setColor(3, 255, 255, 153);
  delay(500);
}

// 2. Laineefekt
void waveEffect() {
  for (int i = 0; i < 4; i++) {
    setColor(i, 0, 255, 0); // Roheline
    delay(100);
    setColor(i, 0, 0, 0);
  }
  for (int i = 3; i >= 0; i--) {
    setColor(i, 0, 0, 255); // Sinine
    delay(100);
    setColor(i, 0, 0, 0);
  }
}

// 3. Värvide tsükkel
void colorCycle() {
  // Punane
  for (int i = 0; i < 4; i++) setColor(i, 255, 0, 0);
  delay(500);
  // Roheline
  for (int i = 0; i < 4; i++) setColor(i, 0, 255, 0);
  delay(500);
  // Sinine
  for (int i = 0; i < 4; i++) setColor(i, 0, 0, 255);
  delay(500);
  // Kollane
  for (int i = 0; i < 4; i++) setColor(i, 255, 255, 0);
  delay(500);
}

// 4. Küünlaefekt (kollased toonid)
void redYellowAlternate() {
  // Esimene kombinatsioon: LED 1-2 punased, LED 3-4 kollased
  setColor(0, 255, 0, 0);
  setColor(1, 255, 255, 0);
  setColor(2, 255, 0, 0);
  setColor(3, 255, 255, 0);
  delay(500);
  
  // Teine kombinatsioon: LED 1-2 kollased, LED 3-4 punased
  setColor(0, 255, 255, 0);
  setColor(1, 255, 0, 0);
  setColor(2, 255, 255, 0);
  setColor(3, 255, 0, 0);
  delay(500);
}

// 5. Diskoefekt
void discoEffect() {
  for (int i = 0; i < 4; i++) {
    setColor(i, random(0, 255), random(0, 255), random(0, 255));
  }
  delay(100);
}

režiimid ja mida nad teevad

// Abifunktsioon LED-i värviseadistuseks
void setColor(int led, int r, int g, int b) {
  analogWrite(RGB_PINS[led][0], r);
  analogWrite(RGB_PINS[led][1], g);
  analogWrite(RGB_PINS[led][2], b);
}

lülitage kõik välja

Video:

Katse 1

Näidis 1:

Selles näites näete, et LED valgustus (antud olukorras punane) süttib sertan korda. Seda saab kasutada erinevate mustrite loomiseks, täpselt nagu koodis morse!

void setup()

{

  // pinMode() määrab töörežim

  pinMode(13, OUTPUT);   // 13-pini number, INPUT/OUTPUT(Sisend/Väljund).

}

void loop()

{

  digitalWrite(13, HIGH);   // Lülita sisse

  delay(1000);              // Ootab 1 sek  

  digitalWrite(13, LOW);    // Lülita välja

  delay(3000);              // Ootab 3 sek

  
  
  digitalWrite(13, HIGH);   // -... .- .-.. .-.. ...

  delay(3000);               

  digitalWrite(13, LOW);

  delay(1000);
  
  digitalWrite(13, HIGH);
  
  delay(1000);
  
  digitalWrite(13, LOW);

  delay(1000);
  
  digitalWrite(13, HIGH);
  
  delay(1000);
  
  digitalWrite(13, LOW);

  delay(1000);
  
  digitalWrite(13, HIGH);
  
  delay(1000);
  
  digitalWrite(13, LOW);

  delay(1000);
  
  digitalWrite(13, HIGH);
  
  delay(1000);
  
  digitalWrite(13, LOW);

  delay(1000);
  
  digitalWrite(13, HIGH);

  delay(3000);
  
  digitalWrite(13, LOW);

  delay(1000);
  
  digitalWrite(13, HIGH);

  delay(1000);
  
  digitalWrite(13, LOW);

  delay(1000);
  
  digitalWrite(13, HIGH);

  delay(3000);
  
  digitalWrite(13, LOW);

  delay(1000);
  
  digitalWrite(13, HIGH);

  delay(1000);
  
  digitalWrite(13, LOW);

  delay(1000);
  
  digitalWrite(13, HIGH);

  delay(1000);
  
  digitalWrite(13, LOW);

  delay(1000);
  
  digitalWrite(13, HIGH);

  delay(1000);
  
  digitalWrite(13, LOW);

  delay(1000);
  
  digitalWrite(13, HIGH);

  delay(3000);
  
  digitalWrite(13, LOW);

  delay(1000);
  
  digitalWrite(13, HIGH);

  delay(1000);
  
  digitalWrite(13, LOW);

  delay(1000);
  
  digitalWrite(13, HIGH);

  delay(3000);
  
  digitalWrite(13, LOW);

  delay(1000);
  
  digitalWrite(13, HIGH);

  delay(3000);
  
  digitalWrite(13, LOW);

  delay(1000);
  
  digitalWrite(13, HIGH);

  delay(3000);
  
  digitalWrite(13, LOW);

  delay(1000);
  
  digitalWrite(13, HIGH);

  delay(3000);
  
  digitalWrite(13, LOW);

  delay(1000);
  
  
  
  
  
  
  
  digitalWrite(13, HIGH);   // -... .- .-.. .-.. ...

  delay(1000);              // Ootab 1 sek  

  digitalWrite(13, LOW);    // Lülita välja

  delay(3000);
}

Näidis 2:

Sellel pildil on emaplaat, mis on saanud koodi, mis annab edasi leivaplaadi ja RGB-lambi.

Seal on transistorid mille vältida liiga palju võimu läheb lamp, sest me ei taha, et kogu asi põlema minna.

Kasutan Arduino, laendusplaat, juhtmed, 3 transistoridit (220 om) ja 1 RGB lamp

kood:

const int RED_PIN = 11;

const int GREEN_PIN = 9;

const int BLUE_PIN = 10;

int DISPLAY_TIME = 100;  // värvimuutuse kiirus

void setup()

{

  pinMode(RED_PIN, OUTPUT);

  pinMode(GREEN_PIN, OUTPUT);

  pinMode(BLUE_PIN, OUTPUT);

}

void loop()

{

mainColors();

showSpectrum();

}

void mainColors()

{

// Kõik LEDid on välja lülitatud

  digitalWrite(RED_PIN, LOW);

  digitalWrite(GREEN_PIN, LOW);

  digitalWrite(BLUE_PIN, LOW);

 delay(1000);

//Põleb punane

  digitalWrite(RED_PIN, HIGH);

  digitalWrite(GREEN_PIN, LOW);

  digitalWrite(BLUE_PIN, LOW);

  delay(1000);

// Põleb roheline

  digitalWrite(RED_PIN, LOW);

  digitalWrite(GREEN_PIN, HIGH);

  digitalWrite(BLUE_PIN, LOW);

  delay(1000);

// Sinine on sisse lülitatud

  digitalWrite(RED_PIN, LOW);

  digitalWrite(GREEN_PIN, LOW);

  digitalWrite(BLUE_PIN, HIGH);

  delay(1000);

// Kollane.

  digitalWrite(RED_PIN, HIGH);

  digitalWrite(GREEN_PIN, HIGH);

  digitalWrite(BLUE_PIN, LOW);

  delay(1000);

// Lilla

  digitalWrite(RED_PIN, LOW);

  digitalWrite(GREEN_PIN, HIGH);

  digitalWrite(BLUE_PIN, HIGH);

  delay(1000);

//Roosa

  digitalWrite(RED_PIN, HIGH);

  digitalWrite(GREEN_PIN, LOW);

  digitalWrite(BLUE_PIN, HIGH);

  delay(1000);

//Valge ehk kõik on sisse lülitatud

  digitalWrite(RED_PIN, HIGH);

  digitalWrite(GREEN_PIN, HIGH);

  digitalWrite(BLUE_PIN, HIGH);

  delay(1000);

}

// Vikerkaar. 

void showSpectrum()

{

  int x;

  for (x = 0; x < 768; x++)

  {

    showRGB(x);  // 

    delay(10);   // paus 0,001 sek

  }

}

// ShowRGB()  põhivärvid: 

// 0 = punane 

// 255 = roheline

// 511 = sinine

// 767 = jälle punane 

void showRGB(int color)

{

  int redIntensity;

  int greenIntensity;

  int blueIntensity;

  if (color <= 255)                

  {

    redIntensity = 255 - color;    // lülitakse välja punane

    greenIntensity = color;        // lülitakse sisse roheline

    blueIntensity = 0;             // sinine on välja lülitatud

  }

  else if (color <= 511)          

  {

    redIntensity = 0;                     // punane on välja lülitatud

    greenIntensity = 255 - (color - 256); 

    blueIntensity = (color - 256);        

  }

  else if (color >= 512)             

  {

    redIntensity = (color - 512);        

    greenIntensity = 0;                  

    blueIntensity = 255 - (color - 512);  

  }

  analogWrite(RED_PIN, redIntensity); // punase LED´i sujuv ümberlülitamine

  analogWrite(BLUE_PIN, blueIntensity);

  analogWrite(GREEN_PIN, greenIntensity);

}

Põhimõtteliselt toimib see nii, et see silub üleminekuid värvide vahel.

Katse 1 / Sissetöö

Mida ja miks?

Põhimõtteliselt see, mida ma tegin, on valgusfoor, et saada kogemusi robotite ehitamise alustega.

Selle töö jaoks kasutasin saiti nimega “Tinkercard“.

Mida ma kasutasin?

8 juhet,

5 resisotorit,

2 LED RBG lapmit

(allpool on pilt)

Mida nad on?

RGB LED on LED-moodul, mis suudab toota peaaegu kõiki värve, kasutades neid kolme peamist lisavärvi: Punane, roheline ja sinine.

Resistor on passiivne kahetermiline elektrooniline komponent, mis rakendab elektritakistust vooluahela elemendina.

Juhe on painduv juht, mida kasutatakse elektrienergia ja informatsiooni edastamiseks.

Kuidas see töötab?

Mis kõik komponendid võimu läheb läbi juhtmed ja tuled üles tuled. Takistid kontrollivad, kui palju energiat läheb lampidesse (ja nii ei põle).

(allpool on video nagu see toimib tegelikus elus)

Kood:

// esimene RGB-LED
const int RED_PIN = 11;
const int GREEN_PIN = 9;
const int BLUE_PIN = 10;

// teine RGB-LED
const int RED_PIN_2 = 7;
const int GREEN_PIN_2 = 5;
const int BLUE_PIN_2 = 6; 

siin ma panen mitu värvid ja läbi, mida pinadesse minna

// Traffic light timings (in milliseconds)
const int RED_TIME = 5000;       // 5 seconds red
const int RED_YELLOW_TIME = 2000; // 2 seconds red+yellow
const int GREEN_TIME = 5000;     // 5 seconds green
const int YELLOW_TIME = 2000;    // 2 seconds yellow

Ma olin laisk panema mingeid numbreid sinna, nii et ma olen pannud need omadused

void setup() {
  pinMode(RED_PIN, OUTPUT);
  pinMode(GREEN_PIN, OUTPUT);
  pinMode(BLUE_PIN, OUTPUT);
  
  pinMode(RED_PIN_2, OUTPUT);
  pinMode(GREEN_PIN_2, OUTPUT);
  
  // Start with all lights off
  digitalWrite(RED_PIN, LOW);
  digitalWrite(GREEN_PIN, LOW);
  digitalWrite(BLUE_PIN, LOW);
}

pin-režiimide panemine ja kõigi tulede väljalülitamine

void loop() {
  // Red light
  digitalWrite(GREEN_PIN_2, HIGH);
  digitalWrite(RED_PIN, HIGH);
  digitalWrite(GREEN_PIN, LOW);
  digitalWrite(BLUE_PIN, LOW);
  delay(RED_TIME);
 
  
  // Green light
  digitalWrite(GREEN_PIN_2, LOW);
  digitalWrite(RED_PIN, LOW);
  digitalWrite(GREEN_PIN, HIGH);
  digitalWrite(RED_PIN_2, HIGH);
  digitalWrite(BLUE_PIN, LOW);
  delay(GREEN_TIME);
  
  // Yellow light
  digitalWrite(RED_PIN_2, LOW);
  digitalWrite(RED_PIN_2, HIGH);
  digitalWrite(RED_PIN, HIGH);
  digitalWrite(GREEN_PIN, HIGH);
  digitalWrite(BLUE_PIN, LOW);
  delay(YELLOW_TIME);
  digitalWrite(RED_PIN_2, LOW);
}

Esimene lamp on suur, see suunab mulle pärast ühte või teist konkreetset tegevust näitab, mida teine lamp peaks tegema.
kui Sa tahad edasi vaadata vaata kommentaare

Video: 。◕‿‿◕。

Uued funktsioonid:
void loop()

(See on sisseehitatud Arduino funktsioon, mis
käivitub korduvalt pärast setup() funktsiooni. Siia kirjutatakse
programmi põhiloogika.)

digitalWrite(pin, value)

(See funktsioon seab digitaalse pin’i väärtuseks kas HIGH (sees) või LOW (väljas). Seda kasutatakse näiteks LED-ide sisse või välja
lülitamiseks.)

delay(ms)

(Peatab programmi kindlaks ajaks millisekundites. Näiteks delay(1000) peatab programmi üheks sekundiks)

Kasutaja loomine XAMPP’is

Tee lahti config,php fail Apache konsoolis

Seda on vaja —-> et tuleb sisse logimise aken

(See asub kus “phpMyAdmin” on)

Uue kasutaja loomine

CREATE USER 'Hussein'@'localhost' IDENTIFIED VIA mysql_native_password USING '***';GRANT USAGE ON *.* TO 'Hussein'@'localhost' REQUIRE NONE WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0; 

Lisa akasutaja nimega sekretaar /parool -kala, kes saab retseptiraamatud vaadata ja uuendata andmeid(SELECT/UPTADE)

Lisa kasutaja nimega sekretaar / parool -kala, kes saab retseptiraamat vaadata ja uuendata andmeid(SELECT/UPTADE)

Foorum: TABEL/PROTSEDUURID

SQL ADMINISTRATOR (vaata alla XMAPP)

CREATE DATABASE arvaLoodust;

Create table puu(
puuId int Primary Key identity(1,1),
puudeHulk int,
puuNimi varchar(30),
puuKõrgus int);

-- seeing it
Select * from puu;
-- deleting it if I am confused 
DROP TABLE puu;
-- I wasn't told how to add so :P
Insert into puu(puudeHulk, puuNimi, puuKõrgus)
values (1, 'MegaTree', 200)

Insert into puu(puudeHulk, puuNimi, puuKõrgus)
values (2, 'Honourtree', 30)

Insert into puu(puudeHulk, puuNimi, puuKõrgus)
values (3, 'ObagTree', 20)

-- Created a procedure to count and calculate (what I have been told)
CREATE PROCEDURE kokkuPuu

AS
BEGIN
SELECT count(*) AS 'puu arv', AVG(puuKõrgus) AS 'keskimine puu kõrgus', MAX(puuKõrgus) AS 'maximum puuKõrgus', Min(puuKõrgus) AS 'minimum puuKõrgus'
FROM puu;
END;

EXEC kokkuPuu;

-- adding more tress
CREATE PROCEDURE AddMoreTrees
@pHulk int,
@pnimi varchar(30),
@pKõrgus int
AS
BEGIN
Insert into puu(puudeHulk, puuNimi, puuKõrgus)
values (@pHulk, @pnimi, @pKõrgus);
SELECT * from puu

END;

-- adding more
EXEC AddMoreTrees @pHulk = 4, @pnimi='obamium', @pKõrgus=56


DELETE FROM puu WHERE puuID=4;

--Now... DESTROYING THEM   >:3
CREATE PROCEDURE BurningDownTheTress
@deleteID int
AS
BEGIN
SELECT * from puu;
DELETE FROM puu WHERE puuID=@deleteID;
SELECT * from puu;

END;

drop procedure BurningDownTheTress;

--DESTROY
EXEC BurningDownTheTress 5;

SQL/XMAPP

BEGIN
SELECT count(*) AS 'puu arv', AVG(puuKõrgus) AS 'keskimine puu kõrgus', MAX(puuKõrgus) AS 'maximum puuKõrgus', Min(puuKõrgus) AS 'minimum puuKõrgus'
FROM puu;
END
BEGIN
Insert into puu(puudeHulk, puuNimi, puuKõrgus)
values (pHulk, pnimi, pKõrgus);

END
BEGIN
SELECT * from puu;
DELETE FROM puu WHERE puuID=deleteID;
SELECT * from puu;

END