Мазмуну:
- 1 -кадам: талаптар
- 2 -кадам: Аппараттык жана программалык камсыздоону түшүнүү
- 3 -кадам: Компоненттерди орнотуу
- 4 -кадам: Коддоо
Video: Түнкү жарыктын түсүн өзгөртүү Ardruino 101: 4 кадам (Сүрөттөр менен)
2024 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2024-01-30 10:42
Бул долбоордо сиз ardruino, Adafruit neo rgb Strips жана 3D принтерин колдонуп түнкү чырак чыгарасыз.
Белгилей кетчү нерсе, бул киришүү менин мектеп долбоорум үчүн гана. Бул долбоордун коду башка долбоордон алынган. Муну менен, мен Ardruinoго келгенде эксперт эмесмин.
1 -кадам: талаптар
Бул долбоор үчүн сизге төмөнкү жабдыктар жана шаймандар керек болот
Аппараттык:
1 - A ardruino101 (АКШда) же Genuino101 (АКШдан тышкары).
2 - Adafruitтен алынган NeoPixel rgb тилкелери (5 вольт).
3 - Ардруино usb туташтыргычы (В түрүнөн А туташтыргычы).
4 - Ardruino программасы, Ardruino IDE Бул окуу куралы биз 1.8.5 версиясын колдонобуз. Программалык китепкананын талаптары: 101, Adafruit NeoPixel жана Madgwick.
5 -Жана сиздин жабдыктарыңызды жайгаштыруучу объект. Бул учурда мен 3D принтерди колдоном. Бул 3D басып чыгаруунун файлы "Лампа башы" деп аталган сүрөттөмөлөрдө жайгашкан. Бул файл форматы 3D басып чыгарууга даяр эмес экенин эске алыңыз. 3D принтерлериңизге жараша, алгач 3D объектиси боюнча белгиленген 3d басып чыгаруу программасын иштетишиңиз керек. Кээде 3D басып чыгаруунун масштабы калыбына келет. Ошентип, диаметри 11 смден 11 смге чейин коюлганын текшериңиз.
6 - Негизги ширетүүчү комплект.
2 -кадам: Аппараттык жана программалык камсыздоону түшүнүү
101. Артурин/Генуино
Тактап айтканда, Ardruino101 жана genuino101 аттарынын жанында такыр эле окшош. Экөөнүн тең өзгөчөлүктөрү бар жана бир эле программаны колдонушат.
Ardruino101, ardruino UNO жана башкалар сыяктуу негизги өзгөчөлүктөргө ээ. Ardruino101дин негизги өзгөчөлүгү - бул биздин долбоордо колдоно турган акселерометр жана гироскоп. Ардруинонун бул түрүндө 101 китепкана кеңейтүүсүнө киргизилген CurrieIMU (Ички өлчөө бирдиги) деп аталган уникалдуу код китепканасы бар.
Муну менен программалык камсыздоо жөнүндө сүйлөшөлү.
Программалык камсыздоо жана китепканалар
Ardruino IDE pythonду негизги булак коду катары колдонот. бул дагы эң башкы платформа, бул жерде көпчүлүк ardruino иштейт. Бул программаны кантип колдонуу керектиги боюнча интернетте көптөгөн үйрөткүчтөр бар, ошондуктан, эгер сиз бул программага жаңы болсоңуз, алгач ошолорду изилдөөнү сунуштайм.
Муну менен биз колдонуп жаткан китепканалар төмөнкүлөр:
Эскиз менюсунан,> Китепкананы кошуу> Китепканаларды башкаруу… Текст киргизүү кутусуна териңиз
- 101 стандарт боюнча ardruino 101 автоматтык түрдө ardruino IDEге кошулбайт. Ардруино түрүн коддоо үчүн бизге бул китепкана кеңейтүүсү керек.
-Adafruit NeoPixel биздин Neo пикселдик тилкелерибизди коддоо үчүн.
-Мэдгвик Чийки маалыматтарды окуу жана бул маалыматтарды чийки, чайыр жана жылдыруу үчүн эсептөө үчүн.
Не RGB тилкелери
Мен колдоно турган түрү 5 чыңалуу же 5v түрү. Бул 5v менен менин тилкелеримди көзөмөлдөө үчүн узартылган энергия булагынын кереги жок. Анын ордуна, мен аркруиномду тилкелерди көзөмөлдөө жана жарыктандыруу үчүн энергия булагы катары колдоном.
Бул тилкелерди баштоодон мурун билишиңиз керек болгон кээ бир кеңештер.
Биринчиден, адафруттан Neodigital RGB LED тилкелери керек болот. Мындай тилкелерди коддорду колдонуу менен колдонууга болот. Кийинки сиз бул тилкелердин арткы жана алдыңкы тарабы бар экенин билишиңиз керек. Бул арткы жана алдыңкы тарабы ширетүү үчүн маанилүү. Жебе баскычы учу менен алысыраак турган алдыңкы жагын ширеткениңизди текшериңиз.
Бул жерде аларды кантип колдонуу боюнча көрсөтмө бар.
Жерде туташуу (GND), чыңалуу байланышы (V) жана пин туташуусу (DIN) жөнүндө эстен чыгарбоо керек болгон 3 ширетүүчү пункт бар.
3 -кадам: Компоненттерди орнотуу
Адегенде сиз талаптардан таба турган компонентти 3d басып чыгарышыңыз керек. Бул учурда мен PLAны колдоном. Объекттин диаметри 11смден 11смге чейин экенин текшериңиз. Бул аркруино менен тилкелердин шперге туура келишин камсыз кылат. Белгилей кетсек, ар бир 3D принтер басып чыгаруу процессин эсептөө үчүн башка программаларды колдонот. Муну менен сиз колдонгон файлдын масштабы башкача болушу мүмкүн, ошондуктан муну эске алыңыз.
Экинчиден, басып чыгаргандан кийин, компоненттер жабылып калышы керек. 3D басылмалар бирге сфераны түзөт. Алар жарашыктуу турушу керек. Эгерде контент жоготула турган болсо, анда капкак толтурулгандыктан ички жагына лента чаптаңыз. Ал эми калын болсо, кумду колдонуңуз.
Үчүнчүдөн, ardruino үчүн скематичтер жана тилкелер абдан оңой. Сиз тилкелерди ardruino менен туташтыруу үчүн 3 зым колдоносуз. Белгилей кетчү нерсе, мен soldering жерлери тилкелерде гана. Ардруинонун өзүндө эмес.
GND GNDге барат
DIN пинге кетет (биздин учурда ardruino боюнча pin6)
5V 5Vга барат
Сиз колдонгон LED тилкелеринин суммасы 30га жеткенин текшериңиз. Дагы, ошондо ал кодду туура аткара албайт. Сиз жөн гана кайчы белгиси менен көрсөтүлгөн бардык керексиз тилкелерди кесип аласыз.
Төртүнчү Evrything чөйрөсүнө жакшы дал келиши керек. Сиз кааласаңыз болот, мен 3 -басылманын 1инин ортосунда кесилиш жасап, тешикти көрүп, үстүнө пластинканы көрүңүз.
4 -кадам: Коддоо
Ошентип, азырынча сиздин китепканаңызга керектүү бардык компоненттер болушу керек.
Бул жерде долбоорду иштетүү үчүн сизге керек болгон код. Жыйынтык мен бул баракчага жөнөткөн видео шилтемедей болушу керек.
Бул коддун булагын бул жерден тапса болот. Бул долбоор коддорду жана колдонуунун артындагы алгаритмди жакшыраак түшүнүү үчүн керектүү кадамдарды камтыйт.
#кошуу #кошуу #кошуу #кошуу
#аныктоо PIN 6 // 11 пикселдик NeoPixel Strip
#аныктоо PIN1 7 // 1 пикселдик NeoPixel Strip #NUMPIXELSти аныктоо 30 // Пикселдердин саны #SAMPLE_RATE 25ти аныктоо // Акселерометр менен гироскоптун үлгүлөрүнүн ылдамдыгы
// Madgwick конфигурациясы
Madgwick чыпкасы; белгисиз узун microsPerReading, microsPrevious; float accelScale, gyroScale;
// NeoPixel конфигурациясы
Adafruit_NeoPixel пикселдери = Adafruit_NeoPixel (NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); Adafruit_NeoPixel pixelStatus = Adafruit_NeoPixel (1, 7, NEO_GRB + NEO_KHZ800);
// Түс мейкиндиктери
RGBConverter rgbConverter; кош h = 1; кош s = 1; кош v = 1; байт rgb [3];
// Статус Motion Lamp
// Мамлекет 0 -> Түс тандоо -Чайыр // Мамлекет 1 -> Каныккандыкты тандоо -Ролл // Мамлекет 2 -> Баалоону тандоо -Яв // Мамлекет 3 -> Түстүн туруксуз int абалын оңдооLamp = 0;
жараксыз орнотуу () {
Serial.begin (9600);
// IMUну баштоо жана чыпкалоо
CurieIMU.begin (); CurieIMU.setGyroRate (SAMPLE_RATE); CurieIMU.setAccelerometerRate (SAMPLE_RATE); filter.begin (SAMPLE_RATE);
// Акселерометр диапазонун 2G деп коюңуз
CurieIMU.setAccelerometerRange (2); // Гироскоптун диапазонун 250 градуска/секундага коюңуз CurieIMU.setGyroRange (250);
CurieIMU.autoCalibrateAccelerometerOffset (X_AXIS, 0);
CurieIMU.autoCalibrateAccelerometerOffset (Y_AXIS, 0); CurieIMU.autoCalibrateAccelerometerOffset (Z_AXIS, 1); CurieIMU.autoCalibrateGyroOffset ();
CurieIMU.attachInterrupt (eventCallback);
CurieIMU.setDetectionThreshold (CURIE_IMU_TAP, 950); CurieIMU.interrupts (CURIE_IMU_TAP);
// туура чен үчүн жаңыртууларды ылдамдатуу үчүн өзгөрмөлөрдү баштоо
microsPerReading = 1000000 / SAMPLE_RATE; microsPrevious = micros ();
// Init NeoPixel 11
piksel.begin (); piksel.show ();
// Init NeoPixel 1
pikselStatus.begin (); piksel.show ();
// Статусун пикселде көрсөтүү
setStatusPixel (statusLamp); }
void loop () {
int aix, aiy, aiz; // акселерометр int gix, giy, giz; сүзүүчү балта, ай, аз; gx, gy, gz; калкып жүрүүчү түрмөк, чайыр, жаа; статикалык белгиси жок узун microsNow;
// маалыматтарды окуу жана чыпканы жаңыртуу убактысы келгенин текшериңиз
microsNow = micros (); эгер (microsNow - microsPrevious> = microsPerReading) {
// CurieIMUдан чийки маалыматтарды окуу
CurieIMU.readMotionSensor (aix, aiy, aiz, gix, giy, giz);
// чийки маалыматтан тартылуу күчүнө жана градуска/экинчи бирдикке айландыруу
ax = convertRawAcceleration (aix); ay = convertRawAcceleration (aiy); az = convertRawAcceleration (aiz); gx = convertRawGyro (gix); gy = convertRawGyro (кий); gz = convertRawGyro (гиз);
// багытты эсептеген чыпканы жаңыртуу
filter.updateIMU (gx, gy, gz, ax, ay, az);
// рубриканы, питти жана роллду басып чыгаруу
roll = filter.getRoll (); кадам = filter.getPitch (); yaw = filter.getYaw ();
// мурунку убакытты көбөйтүү, ошондуктан биз туура темпте жүрөбүз
microsPrevious = microsPrevious + microsPerReading;
// Түстү, Каныккандыкты же Маанини өзгөртсө гана
if (statusLamp Hue if if (pitch> = -90 && pitch <= 90 && statusLamp == 0)
// Бурчтар боюнча чектөөлөр
// тоголок гана -90ºдан 90º = 180ºге чейин // 1 -абал -> Каныккандыгын тандаңыз, эгерде (ролл> = -90 && roll <= 90 && statusLamp == 1) {// Түз бурчтун түрмөгү = түрмөк + 90; // Түстүү координаттарды бурчтардан алат s = roll / 180.0; }
// 2 -абал -> маанини тандаңыз
if (statusLamp == 2) {// yaw 0º to 360º v = yaw / 360.0; }
// rgbга айландыруу
rgbConverter.hsvToRgb (h, s, v, rgb); /* Serial.print ("Түсү:"); Serial.print (h); Serial.print (" -"); Serial.print (s); Serial.print (" -"); Serial.print (v); Serial.println ("");
Serial.print ("Багыты:");
Serial.print (yaw); Serial.print (""); Serial.print (кадам); Serial.print (""); Serial.println (түрмөк); */
// Пикселдердин түсүн өзгөртүү
үчүн (int px = 0; px <NUMPIXELS; px ++) {pixel.setPixelColor (px, пиксел. Color (rgb [0], rgb [1], rgb [2]))); piksel.show (); }}
// Статусун пикселде көрсөтүү
setStatusPixel (statusLamp); }}
float convertRawAcceleration (int aRaw) {
// биз 2G диапазонун колдонуп жаткандыктан // -2g карталары -32768 чийки баасына // +2g карталар 32767 чийки мааниге чейин
float a = (aRaw * 2.0) / 32768.0;
кайтуу a; }
float convertRawGyro (int gRaw) {
// биз 250 градус/секунд диапазонун колдонуп жаткандыктан // -250 карталар -32768 чийки мааниге чейин // +250 карталар 32767 чийки мааниге чейин
float g = (gRaw * 250.0) / 32768.0;
кайтаруу g; }
static void eventCallback (), Serial.println (statusLamp);
// Абалды өзгөртүү
statusLamp ++;
// Баштапкы абал
if (statusLamp> 3) {statusLamp = 0; }}}
боштук setStatusPixel (int statusPx)
{switch (statusPx) {case 0: pixelStatus.setPixelColor (0, pixelStatus. Color (150, 0, 0))); pikselStatus.show (); тыныгуу; 1 -жагдай: pixelStatus.setPixelColor (0, пиксельСтатус. Color (0, 150, 0)); pikselStatus.show (); тыныгуу; 2 -абал: pixelStatus.setPixelColor (0, pixelStatus. Color (0, 0, 150)); pikselStatus.show (); тыныгуу; 3 -жагдай: pixelStatus.setPixelColor (0, pixelStatus. Color (0, 0, 0)); pikselStatus.show (); тыныгуу;
}
}
Сунушталууда:
Жеңил LED түсүн өзгөртүү "шам": 5 кадам (сүрөттөр менен)
Жеңил LED түсүн өзгөртүү "Шам": Бул балдар жана чоңдор үчүн эң сонун түстү өзгөрткөн жарык. Жарыксыз бөлмөдө кооз көрүнөт, майрамдарга сонун жана түнкү жарыкты абдан салкын кылат
MagicCube - Түсүн өзгөртүү үчүн таптап коюңуз: 6 кадам (Сүрөттөр менен)
MagicCube - Түсүн өзгөртүү үчүн таптаңыз: Менин биринчи үйрөткүчүмө кош келиңиз. Бардык кадамдарды аткара аласыз деп үмүттөнөм. Эгерде кандайдыр бир суроолор болсо, сураңыз, мен мазмунду көрсөтүлүүчүгө кошуп коём. Бул долбоордун идеясы C үчүн белек катары өзгөчө эффект менен кичинекей кубду куруу жана өнүктүрүү болчу
Деталдуу тетиктерди чыгаруу: Протездик манжалар (Жылтырап, Түсүн Жылуулук менен Өзгөртүү жана башкалар ): 10 кадам (Сүрөттөр менен)
Деталдуу тетиктерди чыгаруу: Протездик манжалар (Бул жылтырак, Түшүн жылуулук менен өзгөртүү жана башкалар …): Бул кичинекей, татаал бөлүктөрдү арзан баада куюу боюнча колдонмо. Мен кастинг боюнча адис эмесмин деп айтыш керек, бирок көп учурда ойлоп табуунун энеси - бул жердеги кээ бир процесстер жакшы иштеген. Мен Найджел Окленд менен Лондондогу Future Festте таанышкам жана
Түнкү жарыктын автоматтык схемасын Mosfet аркылуу жасаңыз: 6 кадам (сүрөттөр менен)
Мосфеттин жардамы менен түнкү жарыктын автоматтык схемасын жасаңыз: МОСФЕТТИН АВТОМАТТУУ ТҮН ЧАРЫГЫН КАНТИП КЫЛУУ КЕРЕК Саламатсызбы, достор, бул долбоордо мен бир мосфетти жана кээ бир кичинекей компоненттерди колдонуп, автоматтык түнкү күйгүзүүнү кантип жасоо боюнча жөнөкөй схеманы көрсөтөм. куткаруу ар
RGB LED арзан жана жеңил түсүн өзгөртүү түнкү жарык: 3 кадам
RGB LED арзан жана оңой түстөрдү алмаштыруучу түнкү жарык: Бул долбоор мен ойногондон кийин бир топ убакытка созулганын түшүнүү үчүн абдан жеңил болду. led dimming options дагы. Булар сизге керек болгон нерселер