ዝርዝር ሁኔታ:

Capacitive Touch Mood/Ambilight: 8 ደረጃዎች
Capacitive Touch Mood/Ambilight: 8 ደረጃዎች

ቪዲዮ: Capacitive Touch Mood/Ambilight: 8 ደረጃዎች

ቪዲዮ: Capacitive Touch Mood/Ambilight: 8 ደረጃዎች
ቪዲዮ: Very Easy! Capacitive touch Mood/Ambilight [Full Tutorial] 2024, ሀምሌ
Anonim
Capacitive Touch ሙድ/Ambilight
Capacitive Touch ሙድ/Ambilight

ይህ አስተማሪ ባለብዙ ተግባር የስሜት ብርሃንን በመፍጠር የእኔን ተሞክሮ በፍጥነት መጻፍ ነው። የኤሌክትሮኒክ ወረዳዎች አንዳንድ መሠረታዊ ዕውቀት ይጠበቃል። ፕሮጀክቱ ገና አልጨረሰም ፣ አንዳንድ የማከል ተግባር እና ማስተካከያ መደረግ አለበት ግን ቀድሞውኑ ተግባራዊ ሆኗል። እርስዎ ስለእዚህ ትምህርት አጥጋቢ ከሆኑ እኔ አዘምነዋለሁ። በስርዓቱ ልብ አርዱinoኖ ነው። ከዩኤስቢ ወይም ከእያንዳንዱ Capacitive touch ግብዓቶች ግብዓቱን ያካሂዳል እና የ RGB መብራትን ይቆጣጠራል። ይህ አስተማሪ በሦስት ክፍሎች ተከፍሏል-- አቅም ያለው ንክኪ ክፍል የማይታየውን የግብዓት ቁልፎችን ይሸፍናል- የስሜት ብርሃን ክፍል የስሜት ብርሃንን መቆጣጠርን ይሸፍናል- የአምባላይት ክፍሉ ግቤትን በተከታታይ ወደብ ይሸፍናል ፣ መብራቶችን ለመቆጣጠር በኮምፒተር ፕሮግራም የመነጩ የ RGB እሴቶችን ያካሂዳል።.አስተያየት - ኤሌክትሮኒክስ አደገኛ ሊሆን ይችላል ፣ ለደረሰው ማንኛውም ጉዳት እርስዎ እራስዎ ተጠያቂዎች ናቸው። አንዳንድ ኮድ ከመድረኮች የተሰበሰበ ሲሆን የባለቤቱን ስም ላይይዝ ይችላል። እባክዎን ያሳውቁኝ እና ስምዎን እጨምራለሁ።

ደረጃ 1: የእቃ ዝርዝር

ለዚህ አስተማሪ የሚከተሉት ክፍሎች ያስፈልጋሉ-- አርዱinoኖ+ዩኤስቢ ገመድ- የዳቦ ሰሌዳ- የኮምፒተር የኃይል አቅርቦት- 3x RGB ሰቆች ፣ ይመልከቱ dealextreme.com.- 3x TIP120 FETs ፣ እንደ https://uk.farnell.com/stmicroelectronics/tip120 /darlington-transistor-to-220/dp/9804005- የተቃዋሚዎች ስብስብ (6 * 10 ኪሎ ኦኤም ፣ 3 * 2 ሜጋ ኦህ)-ብዙ ሽቦ። - መሣሪያዎች አቅም ንክኪ- ለመሬት ሰሌዳዎች የብረት ቀለበቶች- የመዳብ ሽቦ ወይም ሳህን- የሚገነባበት ነገር (እንደ የመደርደሪያ መደርደሪያ:)

ደረጃ 2 Capacitive Touch - መሠረታዊ እና ወረዳ

Capacitive Touch - መሠረታዊ እና ወረዳ
Capacitive Touch - መሠረታዊ እና ወረዳ
Capacitive Touch - መሠረታዊ እና ወረዳ
Capacitive Touch - መሠረታዊ እና ወረዳ
Capacitive Touch - መሠረታዊ እና ወረዳ
Capacitive Touch - መሠረታዊ እና ወረዳ

የመጻሕፍት መደርደሪያዎቼን ስለምሳልፍ እኔም እነሱን 'የማሻሻል' ዕድል ነበረኝ። በማይታይ ንክኪ አማካኝነት የስሜት ብርሃንን ለመቆጣጠር ፈለግሁ። መጀመሪያ ላይ ዕቅዴ ለእዚህ (እንደ Atmel QT240) ራሱን የወሰነ IC መጠቀም ነበር። ግን ከዚያ እኔ አርዱዲኖ አቅም ያለው አነፍናፊን በሶፍትዌር መምሰል እንደሚችል በማብራራት በአንድ ገጽ ላይ ተሰናከልኩ። የኤሌክትሮኒክ ወረዳው በስዕሉ ውስጥ ሊገኝ ይችላል ፣ አነፍናፊው የተቦረቦረ የመዳብ ሽቦ ነው (አንድ ቀላል ብቻ ይታያል)። ትብነት ከእያንዳንዱ ፒን በፊት በተገኙት ተቃዋሚዎች ቁጥጥር ይደረግበታል። ፍፁም ወይም ቅርብ ንክኪ አስፈላጊ ከሆነ (ከ 1 ሜጋኦኤም (ፍፁም ንክኪ) እስከ 40 ሜጋኦኤም (12-24 ኢንች ርቀት) ሊደርሱ ይችላሉ (2M Ohm resistors ን ተጠቅሜ አበቃሁ)። አነፍናፊው እንደተፈለገው እስኪሠራ ድረስ ከእሴቶቹ ጋር ሙከራ ያድርጉ። ከእያንዳንዱ ጠመዝማዛ በስተጀርባ ከወረዳዎቹ መሬት ጋር የተገናኘን አንዳንድ የመገጣጠሚያ ገጽን (በቀጭን በማይሠራ ቁራጭ ተለይቶ) መጫን ጥሩ ሀሳብ ነው። በዚህ መንገድ አነፍናፊዎቹ የበለጠ የተረጋጉ እና በድምፅ ተፅእኖ አይኖራቸውም። ዳሳሾችን በመደርደሪያ መደርደሪያ ውስጥ ስለመጫን አንዳንድ ተጨማሪ ስዕሎች። በኋላ ላይ ከወረዳው ጋር በቀላሉ ለመገናኘት እንዲሁ ተሰኪ ተጭኗል። መሙያ ሁሉንም ነገር ለመደበቅ ያገለግላል ፣ እና ከዚያ በኋላ ለመሳል ዝግጁ ናቸው።

ደረጃ 3 Capacitive Touch - ኮድ እና ሙከራ

አቅም ያለው ንክኪ - ኮድ እና ሙከራ
አቅም ያለው ንክኪ - ኮድ እና ሙከራ

የሚከተለው የምንጭ ኮድ ለማረም በአርዱኖ ላይ ሊያገለግል ይችላል ፣ እሴቶቹን በአርዱዲኖ ተከታታይ ማሳያ ይፈትሹ። ስድስት እሴቶች ይፈጠራሉ። የመጀመሪያው የስርዓቱ አፈፃፀም መለኪያ ነው። ከሁለተኛው እስከ ስድስተኛው በእያንዳንዱ ሚስማር ላይ የተገነዘቡ እሴቶች ናቸው። ጣትዎን ሲጠጉ እሴቶቹ መነሳት አለባቸው። ካልሆነ ፣ መጥፎ ግንኙነቶችን እና ጣልቃ ገብነትን ያረጋግጡ። ትብነት ለመወሰን የተቃዋሚ እሴቶች ሊለወጡ ይችላሉ። በተወሰኑ አመክንዮአዊ ገደቦች ላይ የሚንቀሳቀስ የ if-then መዋቅርን በመተግበር ፣ ማብሪያ / ማጥፊያ ማድረግ ይቻላል። ይህ በመጨረሻው የአሩዲኖ ኮድ ውስጥ ጥቅም ላይ ይውላል። ተጨማሪ መረጃ ፣ ለማንበብ የተጠቆመ-https://www.arduino.cc/playground/Main/CapSense--- Arduino CapTouch Debugging Code ---#ባዶ ባዶ ቅንብርን () {CapSense ያካትታሉ cs_2_3 = CapSense (2, 4); በፒን 2 እና 4 መካከል ባለ 10 ሚ resistor ፣ ፒን 4 ዳሳሽ ፒን ነው ፣ ሽቦ ይጨምሩ ፣ ፎይልካፕሴንስ cs_2_4 = CapSense (2 ፣ 7); በፒን 2 እና 7 መካከል ባለ 10 ሚ resistor ፣ ፒን 7 ዳሳሽ ፒን ነው ፣ ሽቦ ይጨምሩ ፣ ፎይልካፕሴንስ cs_2_5 = CapSense (2 ፣ 8); በፒን 2 እና 8 መካከል 10 ሚ resistor ፣ ፒን 8 ዳሳሽ ፒን ነው ፣ ሽቦ ይጨምሩ ፣ ፎይልካፕሴንስ cs_2_6 = CapSense (2 ፣ 12); በፒን 2 እና 12 መካከል ባለ 10 ሚ resistor ፣ ፒን 12 ዳሳሽ ፒን ነው ፣ ሽቦ ይጨምሩ ፣ ፎይልካፕሴንስ cs_2_7 = CapSense (2 ፣ 13); // 10M resistor በፒን 2 እና 13 ፣ ፒን 13 አነፍናፊ ፒን ነው ፣ ሽቦን ይጨምሩ ፣ ፎይል ማስቀረት () {Serial.begin (9600) ፤} ባዶ ዙር () {long start = millis (); ረጅም ጠቅላላ 1 = cs_2_3.capSense (30); ረጅም total2 = cs_2_4.capSense (30); ረጅም total3 = cs_2_5.capSense (30); ረጅም total4 = cs_2_6.capSense (30); ረጅም total5 = cs_2_7.capSense (30); Serial.print (ሚሊስ () - ጅምር); // በሚሊሰከንዶች አፈጻጸም ላይ ይመልከቱ Serial.print ("\ t"); // የትር ቁምፊ ለማረም የንፋስ ማረፊያ ክፍተት Serial.print (total1); // የህትመት ዳሳሽ ውፅዓት 1 Serial.print ("\ t"); Serial.print (ጠቅላላ 2); // የህትመት ዳሳሽ ውፅዓት 2 Serial.print ("\ t"); Serial.print (ጠቅላላ 3); // የህትመት ዳሳሽ ውፅዓት 3 Serial.print ("\ t"); Serial.print (ጠቅላላ 4); // የህትመት ዳሳሽ ውፅዓት 4 Serial.print ("\ t"); Serial.println (ጠቅላላ 5); // የህትመት ዳሳሽ ውፅዓት 5 መዘግየት (10); // መረጃን ወደ ተከታታይ ወደብ ለመገደብ የዘፈቀደ መዘግየት} --- ጨርስ ---

ደረጃ 4: ሙድ ብርሃን - መሰረታዊ እና ወረዳ

የስሜት ብርሃን - መሠረታዊ እና ወረዳ
የስሜት ብርሃን - መሠረታዊ እና ወረዳ
የስሜት ብርሃን - መሰረታዊ እና ወረዳ
የስሜት ብርሃን - መሰረታዊ እና ወረዳ
የስሜት ብርሃን - መሰረታዊ እና ወረዳ
የስሜት ብርሃን - መሰረታዊ እና ወረዳ

የስርዓቱን የውጤት ክፍል ለመገንባት ጊዜው አሁን ነው። የአርዱዲኖ ፒውኤምኤም ፒኖች እያንዳንዱን ቀለም ለመቆጣጠር ያገለግላሉ። PWM ማለት Pulse Width Modulation ን ፣ በፍጥነት ፒን በማብራት እና በማጥፋት ሌዲዎቹ ከ 0 ወደ 255 ይደበዝዛሉ። እያንዳንዱ ፒን በ FET ይጨምራል። ለአሁን ፣ ስርዓቱ በአንድ ቀለም አንድ ሰርጥ ብቻ አለው ፣ ይህ ማለት ሁሉም የ RGB ሰቆች በአንድ ጊዜ ቁጥጥር ይደረግባቸዋል እና 3 የ PWM ፒኖች ያስፈልጋሉ (ለእያንዳንዱ ለእያንዳንዱ አንድ)። ለወደፊቱ እያንዳንዱን አራቱን የ RGB ቁርጥራጮቼን መቆጣጠር መቻል እፈልጋለሁ። ያ ማለት 4*3 = 12 PWM ፒኖች (እና ምናልባትም አርዱዲኖ ሜጋ)። እሺ ፣ ለአንዳንድ መርሃግብሮች ጊዜ! ይህ (ሥዕሉን ይመልከቱ) የወረዳው መሠረታዊ ውክልና ነው (በቅርቡ የተሻለ ይሆናል)። አቅም ያላቸው ዳሳሾች እንዲሁ ተካትተዋል (አረንጓዴ ክፍል)። በመሠረቱ ሊብራሩ የሚገባቸው ሦስት አካላት አሉ-- FET ይህ የምናገረው ማጉያ ነው። በር ፣ ምንጭ እና ፍሳሽ አለው። በበሩ ላይ (ከአርዲኖ ጋር የተገናኘ) የስሜት ሕዋሳትን ያሰፋዋል እና በ 12 ቮልት ላይ ለሚነዳው የ RGB ስትሪፕ መንገድ ይከፍታል። ምንጭ በ +12 ቮ ላይ መሆን አለበት ፣ በ GND (መሬት) ላይ መፍሰስ። ለትክክለኛ ፍተሻ የእርስዎን የ FET ዝርዝር መግለጫ ወረቀቶች ይመልከቱ። እያንዳንዱ የ RGB ሰርጥ ከራሱ FET በፊት መቀመጥ አለበት። በዚህ መልኩ ፣ እሱ እንደ አርዱዲኖ ቁጥጥር የሚደረግ መቀየሪያ ነው የሚሰራው። ትርጉሙ ፣ የተለመደው ሽቦ ከ +12 ቪ ጋር መገናኘት አለበት እና አሁኑ በእያንዲንደ በተሇያዩ የቀለም ሰርጦች ውስጥ ይሰምጣሌ። ስትሪፕው ተቃዋሚዎችን አካቷል ፣ ስለዚህ ስለዚያ ምንም አይጨነቅም!- ResistorsThree 10k resistors ማብራት በማይጠበቅባቸው ጊዜ FET አለመበራቱን ያረጋግጣሉ። ሌሎች ሦስት ኤፍኤቲ የሚያፈሰውን ከፍተኛውን የአሁኑን ይገድባሉ። ከፍተኛዎቹ ሶስት ተቃዋሚዎች ቀድሞውኑ በ RGB ስትሪፕ ውስጥ አሉ። እኔ በቀላሉ በሞዱል በቀላሉ ማገናኘት እንድችል የዩኤስቢ ገመዶችን ወደ አርጂቢ ሰቆች ሸጥኩ። ከድሮ ማእከል የተሰኩ መሰኪያዎች በዳቦ ሰሌዳዬ ላይ ይቀመጣሉ። ያለ የዩኤስቢ ገመድ እንዲሠራ ከፈለጉ የድሮውን የኮምፒተር የኃይል አቅርቦት ለ ጭማቂ ፣ ለ 12 ቮ የ RGB ስትሪፕን እና በመጨረሻም 5V ን ለወረዳ ይጠቀሙ።

ደረጃ 5 - የስሜት ብርሃን - ኮድ እና ቁጥጥር

የስሜት ብርሃን በ capacitive ዳሳሾች ቁጥጥር ይደረግበታል። ለአሁን ፣ 2 እና 3 ዳሳሾችን ለቀለም መለወጥ ብቻ ፕሮግራም አወጣሁ። ሌሎቹ ዳሳሾች እስካሁን ድረስ ምንም ተግባር የላቸውም። ኮዱ እዚህ አለ---- የአርዲኖ ሙድ መቆጣጠሪያ ኮድ ---#const const ቡሊያን ተዘዋዋሪ = እውነት ፤ const long timeout = 10000; // Capacitive sensor statementCapSense In1 = CapSense (2, 4); በፒን 4 እና 2 መካከል 2 2 መቃወሚያ ፣ ፒን 2 ዳሳሽ ፒን ነው ፣ ሽቦ ይጨምሩ ፣ ፎይልካፕሴንስ In2 = CapSense (2 ፣ 7); በፒን 4 እና 6 መካከል 2 ሜ resistor ፣ ፒን 6 ዳሳሽ ፒን ነው ፣ ሽቦ ይጨምሩ ፣ ፎይልካፕሴንስ In3 = CapSense (2 ፣ 8); በፒን 4 እና 8 መካከል 2 ሜ resistor ፣ ፒን 8 ዳሳሽ ፒን ነው ፣ ሽቦ ይጨምሩ ፣ ፎይልካፕሴንስ In4 = CapSense (2 ፣ 12); በፒን 4 እና 8 መካከል 2 ሜ resistor ፣ ፒን 8 ዳሳሽ ፒን ነው ፣ ሽቦ ይጨምሩ ፣ ፎይልካፕሴንስ In5 = CapSense (2 ፣ 13); በፒን 4 እና 8 መካከል ባለ 2 ሚ resistor ፣ ፒን 8 ዳሳሽ ፒን ነው ፣ ሽቦ ይጨምሩ ፣ ፎይል // PWM ፒን መግለጫዎች PinR1 = 3 ፤ int PinG1 = 5 ፤ int PinB1 = 6 ፤ // ሌሎች ተለዋዋጮች ቀለም 1 = 128; // በቀለም እንደ ቀይ ቀለም ይጀምሩ Brightness1 = 255; // በ RedValue1 ፣ GreenValue1 ፣ BlueValue1 ፣ በሙሉ ብሩህነት ይጀምሩ። // የ RGB አካላት ማዋቀሩን ያስወግዱ () {// የአነፍናፊ ጊዜ ማብቂያ እሴቶችን In1.set_CS_AutocaL_Millis (ጊዜ ማብቂያ); In2.set_CS_AutocaL_Millis (የጊዜ ማብቂያ); በ3.set_CS_AutocaL_Millis (የጊዜ ማብቂያ); በ4.set_CS_AutocaL_Millis (ጊዜ ማብቂያ); በ5 ረጅም ጠቅላላ 1 = In1.capSense (30); ረጅም total2 = In2.capSense (30); ረጅም total3 = In3.capSense (30); ረጅም total4 = In4.capSense (30); ረጅም total5 = In5.capSense (30); ከሆነ (ጠቅላላ 2> 150) {Color1 ++; // ቀለሙን ይጨምሩ (ቀለም 1> 255) {// Color1 = 0; }} ሌላ ከሆነ (ጠቅላላ 3> 200) {Color1--; // ቀለሙን ይቀንሱ (ቀለም 1 <0) {// Color1 = 255; } // ቀለሙን ወደ rgb hueToRGB (ቀለም 1 ፣ ብሩህነት 1) ይለውጡ ፤ // ቀለሞችን ለ PWM ፒኖች አናሎግ ይፃፉ (PinR1 ፣ RedValue1); analogWrite (PinG1 ፣ GreenValue1); analogWrite (PinB1 ፣ BlueValue1) ፤} // ተግባር አንድን ቀለም ወደ ቀይ ፣ አረንጓዴ እና ሰማያዊ ክፍሎች ለመቀየር። hueToRGB (int hue ፣ int ብሩህነት) {ያልተፈረመ int scaledHue = (hue * 6); ያልተፈረመ int int ክፍል = scaledHue / 256; // ክፍል 0 እስከ 5 በቀለም ጎማ ዙሪያ ያልተፈረመ int segmentOffset = scaledHue - (ክፍል * 256); // በክፍል ውስጥ ያለ ቦታ ያልተፈረመ int compliment = 0; ያልተፈረመ int prev = (ብሩህነት * (255 - segmentOffset)) / 256; ያልተፈረመ int ቀጥሎ = (ብሩህነት * segmentOffset) / 256; (ከተገለበጠ) {ብሩህነት = 255-ብሩህነት; ምስጋና = 255; ቀዳሚ = 255-ቀዳሚ; ቀጣይ = 255-ቀጣይ; } መቀየሪያ (ክፍል) {case 0: // red RedValue1 = ብሩህነት; GreenValue1 = ቀጣይ; BlueValue1 = ምስጋና; ሰበር; ጉዳይ 1: // ቢጫ RedValue1 = prev; GreenValue1 = ብሩህነት; BlueValue1 = ምስጋና; ሰበር; ጉዳይ 2: // አረንጓዴ RedValue1 = ምስጋና; GreenValue1 = ብሩህነት; BlueValue1 = ቀጣይ; ሰበር; ጉዳይ 3: // cyan RedValue1 = compliment; GreenValue1 = ቀዳሚ; BlueValue1 = ብሩህነት; ሰበር; ጉዳይ 4: // ሰማያዊ RedValue1 = ቀጣይ; GreenValue1 = ምስጋና; BlueValue1 = ብሩህነት; ሰበር; ጉዳይ 5: // magenta ነባሪ: RedValue1 = ብሩህነት; GreenValue1 = ምስጋና; BlueValue1 = ቀዳሚ; ሰበር; }} --- --- ጨርስ ---

ደረጃ 6 - አምቢ ብርሃን - አርዱinoኖ ጎን

በእርግጥ ፣ ከኮምፒዩተርዎ የስሜት ብርሃንን መቆጣጠር መቻል ሙሉ በሙሉ አሪፍ ይሆናል። ለምሳሌ ambilight ወይም የድምፅ ቁጥጥር ዲስኮ ለመፍጠር። ይህ ክፍል በ ambilight ክፍል ላይ ያተኩራል ፣ ለወደፊቱ የበለጠ ተግባር እጨምራለሁ። ደህና ፣ ሁሉም በአርዱዲኖ ውስጥ ስለሚገኝ ምንም ተጨማሪ ወረዳ የለም። እኛ የምንጠቀምበት ተከታታይ የግንኙነት ችሎታዎች እና አንዳንድ ‹ፕሮሰሲንግ 1.0› ሶፍትዌር ነው። በዩኤስቢ ገመድ አርዲኖዎን በኮምፒተርዎ ላይ ያያይዙት (ስዕሎችን ወደ እሱ ከሰቀሉ እሱ ቀድሞውኑ ነው)። ለአርዱዲኖ ፣ ለተከታታይ ግንኙነት አንዳንድ ተጨማሪ ኮድ ማከል አለበት። የ RGB እሴቶችን ከኮምፒውተሩ እስከተቀበለ ድረስ ኮዱ ወደ capacitive ዳሳሾች በማዞር ወደ ማዳመጥ ሁኔታ ይቀየራል። ከዚያ የ RGB እሴቶችን ወደ PWM ፒኖች ያዘጋጃል። ይህ ለአሁን የእኔ የመጨረሻ ኮድ ነው ፣ ለውጦቹን እራስዎ ይፈትሹ---- አርዱinoኖ አምቢልት ኮድ ---#const boolean invert = true; const long timeout = 10000; long commStart = 0; char val; // Capacitive sensor statementCapSense In1 = CapSense (2, 4); በፒን 4 እና 2 መካከል 2 2 መቃወሚያ ፣ ፒን 2 ዳሳሽ ፒን ነው ፣ ሽቦ ይጨምሩ ፣ ፎይልካፕሴንስ In2 = CapSense (2 ፣ 7); በፒን 4 እና 6 መካከል 2 ሜ resistor ፣ ፒን 6 ዳሳሽ ፒን ነው ፣ ሽቦ ይጨምሩ ፣ ፎይልካፕሴንስ In3 = CapSense (2 ፣ 8); በፒን 4 እና 8 መካከል 2 ሜ resistor ፣ ፒን 8 ዳሳሽ ፒን ነው ፣ ሽቦ ይጨምሩ ፣ ፎይልካፕሴንስ In4 = CapSense (2 ፣ 12); በፒን 4 እና 8 መካከል 2 ሜ resistor ፣ ፒን 8 ዳሳሽ ፒን ነው ፣ ሽቦ ይጨምሩ ፣ ፎይልካፕሴንስ In5 = CapSense (2 ፣ 13); በፒን 4 እና 8 መካከል ባለ 2 ሚ resistor ፣ ፒን 8 ዳሳሽ ፒን ነው ፣ ሽቦ ይጨምሩ ፣ ፎይል // PWM ፒን መግለጫዎች PinR1 = 3 ፤ int PinG1 = 5 ፤ int PinB1 = 6 ፤ // ሌሎች ተለዋዋጮች ቀለም 1 = 128; // በቀለም እንደ ቀይ ቀለም ይጀምሩ Brightness1 = 255; // በ RedValue1 ፣ GreenValue1 ፣ BlueValue1 ፣ በሙሉ ብሩህነት ይጀምሩ። // የ RGB ክፍሎች ከማዋቀር () {Serial.begin (9600); // ተከታታይ ግንኙነትን ይጀምሩ/ ያዘጋጁ የአነፍናፊ ጊዜ ማብቂያ እሴቶችን In1.set_CS_AutocaL_Millis (የጊዜ ማብቂያ); In2.set_CS_AutocaL_Millis (የጊዜ ማብቂያ); በ3.set_CS_AutocaL_Millis (የጊዜ ማብቂያ); በ4.set_CS_AutocaL_Millis (ጊዜ ማብቂያ); በ5 ረጅም ጠቅላላ 1 = In1.capSense (30); ረጅም total2 = In2.capSense (30); ረጅም total3 = In3.capSense (30); ረጅም total4 = In4.capSense (30); ረጅም total5 = In5.capSense (30); ከሆነ (Serial.available ()) {// መረጃ ለማንበብ የሚገኝ ከሆነ ፣ val = Serial.read (); // ያንብቡ እና በ val commStart = millis () ውስጥ ያከማቹ (val == 'S') {// የመጀመሪያ ቻር ከተቀበለ ፣ (! Serial.available ()) {} // እስከሚቀጥለው እሴት ድረስ ይጠብቁ። RedValue1 = Serial.read (); // አንዴ ከተገኘ ይመድቡ። ሳለ (! Serial.available ()) {} // ከላይ ካለው ጋር ተመሳሳይ። GreenValue1 = Serial.read (); ሳለ (! Serial.available ()) {} BlueValue1 = Serial.read (); } Serial.print (RedValue1); Serial.print (GreenValue1); Serial.println (BlueValue1); } ሌላ ከሆነ ((ሚሊስ () - commStart)> 1000) {ከሆነ (ጠቅላላ 2> 150) {Color1 ++; // ቀለሙን ይጨምሩ (ቀለም 1> 255) {// Color1 = 0; }} ሌላ ከሆነ (ጠቅላላ 3> 200) {Color1--; // ቀለሙን ይቀንሱ (ቀለም 1 <0) {// Color1 = 255; }} hueToRGB (ቀለም 1 ፣ ብሩህነት 1); } አናሎግ ፃፍ (PinR1 ፣ RedValue1); analogWrite (PinG1 ፣ GreenValue1); analogWrite (PinB1 ፣ BlueValue1) ፤} // ተግባር አንድን ቀለም ወደ ቀይ ፣ አረንጓዴ እና ሰማያዊ አካላት ለመቀየር። hueToRGB (int hue ፣ int ብሩህነት) {ያልተፈረመ int scaledHue = (hue * 6); ያልተፈረመ int int ክፍል = scaledHue / 256; // ክፍል 0 እስከ 5 በቀለም ጎማ ዙሪያ ያልተፈረመ int segmentOffset = scaledHue - (ክፍል * 256); // በክፍል ውስጥ ያለ ቦታ ያልተፈረመ int compliment = 0; ያልተፈረመ int prev = (ብሩህነት * (255 - segmentOffset)) / 256; ያልተፈረመ int ቀጥሎ = (ብሩህነት * segmentOffset) / 256; (ከተገለበጠ) {ብሩህነት = 255-ብሩህነት; ምስጋና = 255; ቀዳሚ = 255-ቀዳሚ; ቀጣይ = 255-ቀጣይ; } መቀየሪያ (ክፍል) {case 0: // red RedValue1 = ብሩህነት; GreenValue1 = ቀጣይ; BlueValue1 = ምስጋና; ሰበር; ጉዳይ 1: // ቢጫ RedValue1 = prev; GreenValue1 = ብሩህነት; BlueValue1 = ምስጋና; ሰበር; ጉዳይ 2: // አረንጓዴ RedValue1 = ምስጋና; GreenValue1 = ብሩህነት; BlueValue1 = ቀጣይ; ሰበር; ጉዳይ 3: // cyan RedValue1 = compliment; GreenValue1 = ቀዳሚ; BlueValue1 = ብሩህነት; ሰበር; ጉዳይ 4: // ሰማያዊ RedValue1 = ቀጣይ; GreenValue1 = ምስጋና; BlueValue1 = ብሩህነት; ሰበር; ጉዳይ 5: // magenta ነባሪ: RedValue1 = ብሩህነት; GreenValue1 = ምስጋና; BlueValue1 = ቀዳሚ; ሰበር; }} --- --- ጨርስ ---

ደረጃ 7 - አምቢ ብርሃን - የኮምፒተር ጎን

ከኮምፒውተሩ ጎን አንድ ፕሮሰሲንግ 1.0 ንድፍ ይሠራል ፣ processing.org ን ይመልከቱ። ይህ ትንሽ (በመጠኑ የተዝረከረከ) ፕሮግራም አማካይ ቅጽበታዊ ማያ ገጽን በእያንዳንዱ ቅጽበት ያሰላል እና ይህንን ወደ ተከታታይ ወደብ ይልካል። እስካሁን ድረስ በጣም መሠረታዊ ነው እና አንዳንድ ማሻሻያዎችን ሊጠቀም ይችላል ፣ ግን በጣም ጥሩ ይሰራል! ለበርካታ የተለያዩ የ RGB ቁርጥራጮች እና የማያ ገጽ ክፍሎች ወደፊት አዘምነዋለሁ። እርስዎ እራስዎ ያንን ማድረግ ይችላሉ ፣ ቋንቋው በጣም ቀጥተኛ ነው። ኮዱ ይኸው ነው --- --- የ 1.0 ኮድ ማቀናበር --- የማስመጣት ፕሮሰስ.serial። ፤ የ PImage screenShot ፤ ተከታታይ myPort ፤ የማይንቀሳቀስ የህዝብ ባዶ ዋና (String args ) {PApplet.main (አዲስ ሕብረቁምፊ {"-አቅራቢ" ፣ "ተኳሽ"});} ባዶነት ማዋቀር () {መጠን (100 ፣ 100)); // መጠን (ማያ ገጽ ስፋት ፣ ማያ ገጽ። ቁመት); // ለማረም ዓላማዎች ተከታታይ ወደቦችን ዝርዝር ያትሙ - println (Serial.list ()); // በማክዬ ላይ በተከታታይ ዝርዝር ውስጥ የመጀመሪያው ወደብ // ሁልጊዜ የእኔ ኤፍቲአይኤ አስማሚ መሆኑን አውቃለሁ ፣ ስለዚህ Serial.list () [0] ን እከፍታለሁ። // በዊንዶውስ ማሽኖች ላይ ይህ በአጠቃላይ COM1 ን ይከፍታል። // የሚጠቀሙትን ማንኛውንም ወደብ ይክፈቱ። ሕብረቁምፊ ወደብ ስም = Serial.list () [0]; myPort = አዲስ ተከታታይ (ይህ ፣ የወደብ ስም ፣ 9600) ፤} ባዶ ስዕል () {// ምስል (የማያ ገጽ እይታ ፣ 0 ፣ 0 ፣ ስፋት ፣ ቁመት); screenShot = getScreen (); ቀለም kleur = ቀለም (0, 0, 0); kleur = ቀለም (የማያ ገጽ እይታ); //myPort.write { //myPort.write(int(red (kleur)))); //myPort.write (','); //myPort.write(int(grn_kleur))); //myPort.write (','); //myPort.write(int(ሰማያዊ (kleur)))); //myPort.write(13); መሙላት (kleur); ቀጥተኛ (30 ፣ 20 ፣ 55 ፣ 55) ፤} የቀለም ቀለም (PImage img) {int cols = (img.width); int ረድፎች = (img.height); int ልኬት = (img.width*img.height); int r = 0; int g = 0; int b = 0; img. 0xFF); g = g + ((img.pixels >> 8) & 0xFF); b = b + (img.pixels & 0xFF);} int mean_r = r/(ልኬት/2) ፤ int mean_g = g/(ልኬት/2) ፤ int mean_b = b/(ልኬት/2) ፤ ቀለም mean_clr = ቀለም (አማካይ_r ፣ አማካይ_g ፣ አማካይ_ ለ); myPort.write ('S'); myPort.write (አማካይ_r); myPort.write (አማካይ_g); myPort.write (አማካኝ_ ለ) ፤ መመለስ (አማካይ_clr) ፤} PImage getScreen () {GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment (); GraphicsDevice gs = ge.getScreenDevices (); DisplayMode ሁነታ = gs [0].getDisplayMode (); አራት ማዕዘን ገደቦች = አዲስ ሬክታንግል (0 ፣ 0 ፣ mode.getWidth () ፣ mode.getHeight ()); BufferedImage ዴስክቶፕ = አዲስ BufferedImage (mode.getWidth () ፣ mode.getHeight () ፣ BufferedImage. TYPE_INT_RGB); ይሞክሩ {desktop = new Robot (gs [0]). createScreenCapture (ወሰኖች); } መያዝ (AWTException e) {System.err.println ("የማያ ገጽ መቅረጽ አልተሳካም"); } መመለስ (አዲስ ፒኢሜጅ (ዴስክቶፕ)) ፤} --- ጨርስ ---

ደረጃ 8: ውጤት

ውጤት
ውጤት
ውጤት
ውጤት

እና ይህ ውጤት ነው ፣ በእውነቱ በአልጋዬ ታችኛው ክፍል ላይ ነው። አሁንም ጨርቁን መተካት አለብኝ ፣ ብርሃኑን የበለጠ ያሰራጫል። በዚያ ላይ ተጨማሪ ሥዕሎች። ይህንን አስተማሪ እንደወደዱት ተስፋ አደርጋለሁ እናም እኔ ደግሞ ለራስዎ ፈጠራ መሠረት ነው ብዬ ተስፋ አደርጋለሁ። በጊዜ ገደቦች ምክንያት በጣም በፍጥነት ፃፍኩት። እሱን ለመረዳት አንዳንድ መሠረታዊ የአሩዲኖ/የኤሌክትሮኒክስ ዕውቀት ሊኖርዎት ይችላል ግን በደንብ ከተቀበለ ለወደፊቱ ለማዘመን አቅጃለሁ።

የሚመከር: