Photoresistor og Buzzer
0 kommentarer

Välkommen till den tredje och ännu en spännande Arduino-blogg i serien! Idag ska vi utforska ett spännande sätt att kombinera ljus och ljud i vårt Arduino-projekt. Vi kommer att lära oss hur man aktiverar en summer med hjälp av en fotoresistor som upptäcker förändringar i ljusintensitet. Med detta projekt kan vi skapa en interaktiv miljö där ljudet från summern aktiveras när ljuset träffar fotomotståndet.

I den här bloggen kommer vi att fokusera på att använda en specifik kod för att uppnå vårt önskade resultat. Vi kommer att introducera och förklara koden steg för steg så att du enkelt kan följa med och implementera den i ditt eget projekt. Koden är enkel , men ändå effektiv för att styra både summern och LED-ljuset baserat på ljusintensiteten som mäts av fotoresistorn.

I koden hittar du att vi använder ljusintensitetsvärdet som mäts av fotomotståndet för att styra både summern och LED-ljuset. Ju mer ljus som detekteras av fotomotståndet , desto högre blir volymen på summern och ljusstyrkan på LED-ljuset.

Komponenterna i detta projekt

KY-018 Fotoresist
Arduino UNO
bygeltrådar
KY-006 Passiv summer

  • KY-018 Fotoresistor : En fotoresistor, även känd som en ljuskänslig resistor, är en elektronisk komponent som ändrar sin resistans baserat på ljusintensiteten den utsätts för. I vårt projekt använder vi KY-018 Photoresistor för att mäta ljusnivån och använda den som en input till vår Arduino UNO.
  • Arduino UNO : Arduino UNO är en populär mikrokontrollerplattform baserad på Atmels ATmega328P mikrokontroller. Den fungerar som hjärnan i vårt projekt och styr både insignalen från fotomotståndet och styrningen av summern och LED-ljuset baserat på ljusintensiteten.
  • Bygeltrådar : Bygelkablar är korta kablar med kontakter i båda ändar som används för att koppla ihop olika komponenter på en brödbräda eller för att ansluta komponenterna till Arduino UNO. De ger ett flexibelt och enkelt sätt att ansluta komponenterna.
  • KY-006 Passiv summer : En passiv summer är en komponent som kan producera ljud när en elektrisk ström appliceras på den. I vårt projekt använder vi KY-006 Passive Buzzer för att generera ljud som motsvarar ljusintensiteten som mäts av fotoresistorn.

KY-018 Fotoresistor

Fotoresistorn fungerar genom att ändra dess motstånd baserat på mängden ljus den utsätts för. När ljus finns kommer motståndet att minska, och när det är brist på ljus kommer motståndet att öka. Detta resistansvärde översätts till en analog spänning som representerar intensiteten hos det avkända ljuset.

Du kan använda KY-018 fotoresistor för att övervaka ljusnivåer i olika miljöer eller som en del av automatiserade system som kräver ett svar på förändringar i ljusförhållanden. Genom att mäta den analoga spänningen från fotoresistorn kan du få information om intensiteten i det omgivande ljuset och fatta beslut utifrån det.

Observera att KY-018 fotoresistorn är en analog sensor , vilket betyder att du behöver en analog ingång på din Arduino (t.ex. en analog stift) för att läsa värdet korrekt.

KY-006 Passiv summer

Denna modul består av en passiv summer och 3 hanstift. Du kan använda den för att generera toner mellan 1,5 till 2,5 kHz genom att slå på och av den upprepade gånger vid olika frekvenser, antingen med fördröjningar eller PWM (Pulse Width Modulation).

KY-006 summern kan generera ljud i detta frekvensområde genom att slå på och av snabbt. Du kan använda den för att skapa olika ljudeffekter, larmljud eller för att indikera olika tillstånd i ditt projekt. Observera att den kräver en driftspänning mellan 1,5V och 15V DC för att fungera korrekt.

Genom att kontrollera på/av-perioderna med lämpliga fördröjningar eller PWM kan du uppnå olika toner och rytmer . Summern kan vara användbar för att lägga till ljudåterkoppling till dina Arduino-projekt eller för att skapa en enkel larmfunktion.

Projektcykeln

Detta projekt använder Arduino UNO, två digitala stift och ett analogt stift tillsammans med flera komponenter för att aktivera en summer och en LED. Det är viktigt att nämna att det också finns några motstånd som spelar en betydande roll i kretsen.

Två specifika digitala stift på Arduino UNO har valts noggrant. Jag har valt digitala stift som stödjer pulsbreddsmodulering ( PWM ), vilket innebär att de kan generera variabla utspänningar mellan 0 och 5 volt. Detta tillåter kontroll av volymen på summern och ljusstyrkan på lysdioden.

Summern är ansluten till en av Arduinos digitala stift, stift 11 , och det andra benet på buzzerx dras högt, vilket betyder att den är ansluten till en spänningskälla.

Lysdioden är ansluten till ett annat digitalt stift, stift 6 , och den andra änden av lysdioden dras också högt med hjälp av ett 220 ohm motstånd. Detta säkerställer att strömmen genom lysdioden begränsas för att undvika skador.

För att mäta ljusintensiteten används en fotoresistor (LDR) som fungerar som ett variabelt motstånd. LDR är ansluten till ett 10 k ohm motstånd och den andra änden till Arduino UNO:s analoga stift 0 (A0) . Detta gör att Arduino kan mäta spänningen över LDR och därmed bestämma ljusintensiteten.

För att driva summern och lysdioden tillförs 5 volt från Arduino UNO:s 5V-stift. Ett 220 ohm motstånd är placerat i serie med både summern och lysdioden för att begränsa strömmen och skydda komponenterna.

Kretsschemat nedan visar kopplingen mellan komponenterna och Arduino UNO.

Nu när vi har projektets kretsar och komponenter under kontroll är det dags att dyka ner i koden och se hur vi kan programmera Arduino för att styra vår summer och LED med hjälp av ett fotomotstånd.

Koden

Vi har tidigare tagit upp de inbyggda funktionerna/kommandon och programmeringskoncept som används i detta projekt i våra tidigare bloggar i denna serie. Även om vi redan har en god förståelse för dessa koncept, kommer vi fortfarande att utforska koden steg för steg för att säkerställa att vi har en tydlig förståelse för hur man aktiverar summern och lysdioden med hjälp av en fotoresistor.

 int sensorPin = 14 ; // A0 representeras av det numeriska värdet 14
 int buzzerPin = 11 ; // Arduino buzzer-gränssnitt stelt
 int ledPin = 6 ; // Arduino LED-gränssnittsstift


 void setup () { 
Seriell . börja ( 115200 ); // Starta seriell bildskärm i Arduino IDE
 pinMode (buzzerPin, OUTPUT ); // Ställ in summerstiftet som utgång
 pinMode (ledPin, OUTPUT ); // Ställ in LED-stiftet som utgång
 }


 void loop () { 
int senValue = analogRead (sensorPin);
 fördröjning ( 10 );
 Seriell . println (senValue);


 if (senValue < 500 ) {
 analogWrite (buzzerPin, senValue / 4 ); // Slå på summern 
analogWrite (ledPin, senValue / 4 ); // Slå på lysdioden
 } annat {
 analogWrite (buzzerPin, 0 ); // Stäng av summern
 analogWrite (ledPin, 0 ); // Stäng av lysdioden
 }
 }

Koden börjar med att definiera tre variabler, sensorPin, buzzerPin och ledPin , som representerar de digitala stiften på Arduino ansluten till fotoresistorn, summern respektive LED.

I setup() -funktionen initieras kommunikationen med den seriella monitorn, och stiften buzzerPin och ledPin sätts som utgångar. Whoa.. klappa hästen för vad är Serial Monitor??


Seriell monitor

Serial Monitor är ett verktyg i Arduino IDE som låter dig kommunicera med din Arduino via den seriella anslutningen mellan Arduino-kortet och din dator. Du kan öppna Serial Monitor genom att klicka på ikonen högst upp i Arduino IDE-fönstret.


Med Serial Monitor öppen kan du skicka och ta emot seriella data mellan Arduino och din dator. Du kan använda den seriella monitorn för att skicka kommandon, ställa in parametrar eller ta emot sensorvärden från Arduino. Du kan också använda den för att felsöka och övervaka din Arduino-applikation genom att skriva ut meddelanden och värden.

För att skicka data från Arduino till Serial Monitor kan du använda Serial.print() eller Serial.println() funktionen. Dessa funktioner skickar data som text till fönstret Serial Monitor. Du kan också använda Serial.write() för att skicka binär data.

Den seriella monitorn kan vara användbar för olika ändamål, som att kontrollera och felsöka dina Arduino-program, övervaka sensorvärden, testa kommunikationsprotokoll och interagera med externa enheter eller programvara via serieanslutningen.

Genom att använda Serial Monitor kan du interagera med din Arduino och få feedback och data i realtid, vilket gör det enklare att utveckla, testa och felsöka dina Arduino-projekt.

I loop() -funktionen utförs följande steg:

  1. Läs värdet på fotomotståndet med funktionen analogRead() och lagra värdet i variabeln senValue . (Vi har lärt oss om analogRead() i tidigare bloggar i den här serien).
  2. Lägg till en kort fördröjning på 10 millisekunder med funktionen delay() .
  3. Skriv ut värdet för senValue till seriell monitor med Serial.println().

Värdet på senValue kontrolleras sedan . Om det är mindre än 500 betyder det att det finns en låg ljusnivå och följande åtgärder utförs:

  • Summern aktiveras genom att använda funktionen analogWrite() med ett värde lika med en fjärdedel av senValue .
  • Lysdioden tänds på samma sätt som summern.

Om senValue är 500 eller högre betyder det att det finns tillräckligt med ljus och att båda komponenterna stängs av genom att ställa in deras utgångsvärde till 0.

Vi har utforskat koncept som analog ingång och PWM (Pulse Width Modulation) för att styra volymen på summern och ljusstyrkan på lysdioden baserat på ljusnivån som avkänns av fotoresistorn. Detta öppnar upp ett brett utbud av möjligheter för att skapa interaktiva ljudeffekter och ljusstyrning i våra projekt. Men vänta... det finns mer!

BONUSPROJEKT

Okej Super! Nu har vi varit med om ännu ett spännande projekt, men om du tror att bloggen är slut, tänk om! Vi har förberett ett roligt litet bonusprojekt! Och det är inte vilket bonusprojekt som helst... Har du någonsin drömt om att spela på en banan? OROR INTE MER, för nu har du chansen!

I detta bonusprojekt kommer vi att utforska ett roligt och interaktivt sätt att spela musik med hjälp av kapacitiva stift på Arduino och vår gode vän summern. Genom att koppla bananer till de kapacitiva stiften på Arduino och röra vid dem kan vi skapa olika toner eftersom detta ändrar banans kapacitans. Härmed skapar vi vårt eget bananpiano! Föreställ dig att imponera på dina vänner och familj med dina musikaliska bananfärdigheter. Detta projekt är både underhållande och lärorikt.

I detta bonusprojekt använder vi alla komponenter från originalprojektet förutom fotoresistorn. Utöver det behöver vi två andra "komponenter", nämligen:

1M ohm motstånd
Bananer

Hur fungerar detta bananpiano egentligen?
Kapacitiva stift på Arduino är digitala ingångar som kan känna av förändringar i kapacitans, vilket gör det möjligt att upptäcka beröring eller närhet av en persons kropp eller annat föremål utan fysisk kontakt. Kapacitansen ändras när det finns en närvaro av ett ledande föremål nära stiftet. Så fungerar till exempel din touchfunktion på din mobil – genom att mäta förändringar i kapacitansen när du rör vid din skärm!

I vårt banan-piano-projekt använder vi kapacitiva stift på Arduino för att upptäcka beröring av bananer. Vi använder " CapacitiveSensor "-biblioteket för att konfigurera och läsa data från kapacitiva sensorer anslutna till lämpliga stift.

I vårt exempel använder vi 3 bananer , men du kan lägga till lika många bananer som det finns kapacitiva stift! Om det är svårt att tyda kretsuppsättningen för ditt alldeles egna bananpiano, se kretsuppsättningen i denna You-Tube-video.

Här är bonuskoden:

 # include <CapacitiveSensor.h>
 # definiera summer 11


 // Deklarera variabler för kapacitiva sensorer
 CapacitiveSensor banana1 = CapacitiveSensor( 12 , 3 ); 
CapacitiveSensor banana2 = CapacitiveSensor( 12 , 4 );
 CapacitiveSensor banana3 = CapacitiveSensor( 12 , 5 );


 void setup () {
 // Stäng av autokalibrering på kanal 1 - bara som ett exempel
 banana1.set_CS_AutocaL_Millis( 0xFFFFFFFF );
 banana2.set_CS_AutocaL_Millis( 0xFFFFFFFF );
 banana3.set_CS_AutocaL_Millis( 0xFFFFFFFF );
 }


 void loop () { 
// Ställ in sensorernas känslighet
 long touch1 = banan1.capacitiveSensor( 1000 );
 long touch2 = banana2.capacitiveSensor( 1000 );
 long touch3 = banana3.capacitiveSensor( 1000 );


 // När sensorn berörs spelas en ton på summern
 if (touch1 > 1000 ) {
 ton (summer, 400 ); 
} else if (touch2 > 1000 ) {
 ton (summer, 600 );
 } else if (touch3 > 1000 ) {
 ton (summer, 800 );
 } annat {
 noTone (summer);
 }

 fördröjning ( 10 );
 }

    • Först inkluderar vi biblioteket " CapacitiveSensor ", vilket gör att vi kan använda de kapacitiva sensorerna i vårt projekt.
    • Vi definierar stiftet för vår summer med #define . Detta gör det enkelt att byta om det behövs.
    • Därefter skapar vi tre objekt av typen CapacitiveSensor genom att ange sändnings- och mottagnings-pinnumren för varje sensor.
    • I funktionen void setup() stänger vi av autokalibreringen av sensorerna genom att använda funktionen set_CS_AutocaL_Millis() för varje sensor. Detta ger oss mer kontroll över sensorernas känslighet.
    • I void loop()- funktionen ställer vi in ​​känsligheten för varje sensor genom att läsa värdet från capacitiveSensor()- funktionen för varje sensor. Vi lagrar dessa värden i variablerna touch1 , touch2 och touch3 .
    • Därefter kontrollerar vi varje sensor separat med hjälp av if och else if- förhållanden. Om värdet på en sensor är högre än 1000 betyder det att den har berörts. Vi aktiverar sedan summern med funktionen tone() och anger en frekvens för att generera en ton.
    • Om inga sensorer har rörts, stänger vi av summern med funktionen noTone() .
    • Slutligen lägger vi till en kort fördröjning med hjälp av delay() -funktionen för att ge tid att upptäcka sensoringången igen.

    Det är viktigt att notera att detta är en enkel beskrivning av koden för att ge en övergripande förståelse. Det kan vara bra att läsa dokumentationen för CapacitiveSensor -biblioteket för att få en djupare förståelse för hur det fungerar om du vill utforska det ytterligare.

    Vi hoppas att du har gillat den här bloggserien om Arduino-projekt och lärt dig något nytt om elektronik och programmering längs vägen. Vi har täckt grundläggande koncept som analoga sensorer, ljusstyrning och ljudproduktion.

    Genom dessa projekt har vi utforskat olika komponenter inklusive fotoresistorer, summer, lysdioder och kapacitiva sensorer. Vi fick också praktisk erfarenhet av att ansluta och programmera Arduino för att skapa interaktiva och roliga prylar.

    Kom ihåg att detta bara är början på din resa inom elektronik och programmering. Det finns oändliga möjligheter att utforska och skapa med Arduino-plattformen. Vi uppmuntrar dig att fortsätta lära dig och experimentera med nya projekt.

    Vi hoppas att den här bloggserien har gett dig inspiration och motivation att fortsätta med dina egna projekt och experiment. Kom alltid ihåg att ha kul och experimentera säkert när du utforskar Arduinos spännande värld.

    Tack för att du följer vår bloggserie och vi ses nästa gång när vi dyker in i ett nytt projekt!

      Skriv en kommentar!

      Relevanta produkter

      TS101 digital loddekolbeTS101 digital loddekolbe i hånd
      TS101 digital lödkolv med USB C-försörjning
      Erbjudande prisFrån 1 119 kr
      14 i lager
      TS80P USB-C Loddekolbe kitTS80P Loddekolbe
      TS80P USB-C mini Lödpenna sats
      Erbjudande prisFrån 1 279 kr
      2 i lager
      bruge Loddekolbe Renser til at rengøre loddekolbespidsenLoddekolbe Renser
      Lyxigt rengöringsmedel för lödkolv
      Erbjudande pris143 kr
      8 i lager