Სარჩევი:

ColorCube: 7 ნაბიჯი (სურათებით)
ColorCube: 7 ნაბიჯი (სურათებით)

ვიდეო: ColorCube: 7 ნაბიჯი (სურათებით)

ვიდეო: ColorCube: 7 ნაბიჯი (სურათებით)
ვიდეო: როგორ მოვაგვაროთ რუბიკის კუბიკი | მარტივი გაკვეთილი 2024, დეკემბერი
Anonim
Image
Image
ფერადი კუბი
ფერადი კუბი
ფერადი კუბი
ფერადი კუბი

ეს ნათურა ჩემი შვილიშვილისთვის გავაკეთე, როდესაც ის ფერებს სწავლობდა. მე შთაგონებული ვიყავი MagicCube პროექტით, მაგრამ საბოლოოდ შევქმენი ყველა ნაწილი ნულიდან. ადვილია დაბეჭდვა და აწყობა და თქვენ მიიღებთ ცოდნას, თუ როგორ მუშაობს გიროს მოდული.

ნაბიჯი 1: მასალები

მასალები
მასალები

არდუინოს ნაწილი:

  • არდუინო ნანო (უკეთესია სათაურის ქინძისთავების გარეშე)
  • MPU-6050 3 ღერძი გირო მოდული
  • TP4056 მიკრო USB ბატარეის დამტენი მოდული
  • MT3608 Step Up Power Booster მოდული
  • LiPo ბატარეა 902936 900mA ან 503035 3.7V 500mA. თქვენ შეგიძლიათ გამოიყენოთ ნებისმიერი LiPo ბატარეა 3, 7V და ზომით არანაკლებ 35x30x15 მმ, მაგრამ თქვენ უნდა დაიჭიროთ ბატარეა ხვრელში.
  • PS-22F28 თვითმმართველობის ჩაკეტვის ღილაკი ან PS-22F27 თვითმმართველობის ჩაკეტვის ღილაკი ორივე იდეალურად ჯდება დაბეჭდილ ნაწილზე.
  • LED RGB WS2812B ბეჭედი - 16 LED 68 მმ გარე დიამეტრი - თქვენ შეგიძლიათ გამოიყენოთ ნებისმიერი ბეჭედი თუნდაც სხვადასხვა რაოდენობის LED- ებით (უნდა შეიცვალოს ერთი მუდმივი კოდი - #განსაზღვრეთ NUMPIXELS 16) მაქსიმალური დიამეტრით 76 მმ (ასევე შეგიძლიათ გამოიყენოთ ნეოპიქსელის ჯოხი 8x LED ან ნებისმიერი LED ზოლები WS2812b).

ბეჭდის მაგალითები: 8 LED 32 მმ 12 LED 38 მმ 12 LED 50 მმ 16 LED 60 მმ 24 LED 66 მმ 16 LED 44 მმ

მონტაჟისთვის შეგიძლიათ გამოიყენოთ შუა ნაწილში დაბეჭდილი ნებისმიერი ხვრელი. ისინი მოიცავს თითქმის ნებისმიერ ვარიანტს (არ არის აუცილებელი ბეჭედი იყოს 100% ორიენტირებული).

მავთულები

კუბი

  • PLA ძაფები კუბის ზედა ნაწილისთვის - გამოიყენეთ თეთრი ფერი, რადგან გამჭვირვალე არ არის კარგი (LED- ები ჩანს და ფერი არ არის გლუვი), ჩემი რეკომენდაცია არის Prusament Vanilla White
  • PLA ძაფები ქვედა, შუა და ღილაკის ნაწილებისთვის - გამოიყენეთ მუქი ფერი, რადგან Arduino– ს ზოგიერთ მოდულს აქვს განათება თავზე და ის არ ჯდება კუბური LED– ების ფერებში, ჩემი რეკომენდაციაა Prusament Galaxy Black
  • 1x M3x5 ხრახნიანი ხრახნი - სიგრძე (10 მმ) და თავის ფორმა არ არის კრიტიკული - ხრახნი არ ჩანს
  • 2x M2x3 ხრახნიანი ხრახნი - სიგრძე (5 მმ) და თავის ფორმა არ არის კრიტიკული - ხრახნები არ ჩანს

ინსტრუმენტები

  • 3D პრინტერი
  • მრავალმეტრიანი
  • გასაყიდი რკინა
  • Screwdriver

ნაბიჯი 2: ბეჭდვა

ბეჭდვა
ბეჭდვა
ბეჭდვა
ბეჭდვა

ColorCube– ის ყველა ნაწილი შექმნილია Autodesk Fusion360– ში. f3d ფაილი თან ერთვის.

ColorCube დაბეჭდილია Prusa i3 MK3S პრინტერზე ყველა ნაგულისხმევი პარამეტრით და არ ველოდები რაიმე აუცილებელ ცვლილებას სხვადასხვა პრინტერზე. გამოიყენეთ თქვენი საყვარელი პარამეტრები PLA– სთვის (თუ დაბეჭდილია PLA– ზე, პრობლემა არ არის PETG ან ASA– ს გამოყენება).

3D ბეჭდვის პარამეტრები:

  • ფენა 0.2 მმ (0.2 მმ ხარისხის პარამეტრები PrusaSlicer– ზე)
  • Prusament PLA Filament პარამეტრები PrusaSlicer– ზე
  • შეავსეთ 15%
  • მხარდაჭერა არ არის
  • არა ბრემი

ნაბიჯი 3: წრე

წრე
წრე

ნაბიჯი 4: შედუღება

შედუღება
შედუღება
შედუღება
შედუღება
შედუღება
შედუღება

გაფრთხილება: გამოიყენეთ მრავალმეტრიანი დარწმუნდით, რომ DC-DC გამაძლიერებელი MT3608 გამოდის 5 ვ. პირველ რიგში - გაზომვამდე - გადააბრუნეთ მორთვა საათის ისრის მიმართულებით ბოლომდე (დაჭერით). როდესაც ძაბვა (3, 7V) შეყვანისას მას უნდა მისცეს დაახლოებით იგივე მნიშვნელობა. მოუხვიეთ საათის ისრის საწინააღმდეგოდ (დაგჭირდებათ 10-20 სრული ბრუნვა) და მოულოდნელად ძაბვა მოიმატებს. დააყენეთ 5V გამომავალი რბილად. (ფოტო)

შეხედეთ კუბის დაბეჭდილ ქვედა ნაწილს. თითოეულ კომპონენტს აქვს საკუთარი ხვრელი. ის განსაზღვრავს, რამდენი მავთული გჭირდებათ თითოეულ კომპონენტს შორის (არ გამოიყენოთ ზედმეტად გრძელი მავთულები, წინააღმდეგ შემთხვევაში თქვენ მიიღებთ მავთულის ჯუნგლებს). (ფოტო)

შედუღებული მავთულები მხოლოდ არდუინო ნანოსა და LED რგოლს შორის (3 მავთული: წითელი 5V - 5V, შავი GND - GND, ლურჯი D6 - DI). გაუშვით LED ბეჭდის ფუნქციონირების ტესტი შემდეგი თავიდან. (ფოტო)

თუ ყველაფერი კარგადაა, გააგრძელეთ Gyro MPU6050 (5 მავთული: წითელი 5V - VCC, შავი GND - GND, ლურჯი A4 - SDA, მწვანე A5 - SCL, ყვითელი D2 - INT) დამატებით. ატვირთეთ ColorCube.ino კოდი და ტესტი (სხვა კომპონენტები განკუთვნილია მხოლოდ ბატარეისთვის და დატენვისთვის). (ფოტო)

თუ ყველაფერი წესრიგშია, დაამატეთ დანარჩენი კომპონენტები. არსებობს მხოლოდ წითელი (+) და შავი (-) მავთულები. შეარჩიეთ მარჯვენა ჩამაგრება თვითმმართველობის ჩაკეტვის ღილაკზე (არ არის დაკავშირებული, როდესაც არ დაჭერით). შეამოწმეთ ფუნქციონირება ბატარეაზე და ბატარეის დატენვაზე. (ფოტო)

წითელი LED განათება TP4056 დატენვისას და ლურჯი LED განათება სრულად დატენვისას. შუა ნაბეჭდ ნაწილში TP4056- ის ზემოთ არსებული ხვრელი გადის LED სინათლეს ColorCube- ის ზედა ნაწილში და თქვენ შეგიძლიათ ამოიცნოთ დატენვის ეტაპი. (ფოტო)

ნაბიჯი 5: კოდი

პირველ რიგში, თქვენ უნდა გადმოწეროთ საჭირო ბიბლიოთეკები.

არსებობს დეტალური ინსტრუქციები Adafruit Neopixel ბიბლიოთეკისთვის:

LED ბეჭდის ფუნქციონირების ტესტი: თქვენ შეგიძლიათ შეამოწმოთ თქვენი წრე ბიბლიოთეკაში შეტანილი მაგალითით. გახსენით ფაილი ფაილიდან/მაგალითებიდან/Adafruit NeoPixels/მარტივი და ატვირთეთ (არ დაგავიწყდეთ ამ ხაზის სწორად დაყენება პიქსელების რაოდენობის მიხედვით, რომელსაც იყენებთ: #define NUMPIXELS 16).

I2Cdev და MPU6050: ჩამოტვირთეთ და გახსენით i2cdevlib-master.zip ფაილი https://github.com/jrowberg/i2cdevlib. დააკოპირეთ ფორმა გახსნილი საქაღალდე i2cdevlib-master/Arduino ორი ქვესაქაღალდე: I2Cdev და MPU6050. ორივე გადაწერა Arduino IDE ბიბლიოთეკის საქაღალდეში (დოკუმენტები/Arduino/ბიბლიოთეკები თუ ნაგულისხმევი ინსტალაციაა).

არ დაგავიწყდეთ Arduino IDE გადატვირთვა ბიბლიოთეკების კოპირების შემდეგ.

#მოიცავს #ifdef _AVR_ #მოიცავს // საჭიროა 16 MHz Adafruit Trinket #endif #მოიცავს "Wire.h" მოიცავს "I2Cdev.h" #მოიცავს "MPU6050_6Axis_MotionApps20.h" MPU6050 mpu; #განსაზღვრეთ INTERRUPT_PIN 2 // გამოიყენეთ pin 2 Arduino Uno– ზე და უმეტეს დაფებზე #განსაზღვრეთ PIN 6 #განსაზღვრეთ NUMPIXELS 16 // დააყენეთ LED– ების სწორი რაოდენობა Adafruit_NeoPixel პიქსელი (NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); uint32_t activeColor, oldActiveColor = 0; bool dmpReady = ყალბი; uint8_t mpuIntStatus; uint8_t devStatus; uint16_t პაკეტი ზომა; uint16_t fifoCount; uint8_t fifoBuffer [64]; Quaternion q; VectorFloat გრავიტაცია; float rotace [3]; int x, y, z; არასტაბილური ბოლი mpuInterrupt = ყალბი; void dmpDataReady () {mpuInterrupt = ჭეშმარიტი; } void setup () {Serial.begin (115200); pixels.begin (); pixels.clear (); pixels.setBrightness (128); #განსაზღვრული (_ AVR_ATtiny85_) && (F_CPU == 16000000) clock_prescale_set (clock_div_1); #endif // შეუერთდით I2C ავტობუსს (I2Cdev ბიბლიოთეკა ამას ავტომატურად არ აკეთებს) #თუ I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE Wire.begin (); Wire.setClock (400000); // 400kHz I2C საათი. დააკომენტარეთ ეს სტრიქონი, თუ შედგენის სირთულეები გაქვთ #elif I2CDEV_IMPLEMENTATION == I2CDEV_BUILTIN_FASTWIRE Fastwire:: setup (400, true); #endif while (! სერიული); Serial.println (F ("I2C მოწყობილობების ინიციალიზაცია …")); mpu. ინიციალიზაცია (); pinMode (INTERRUPT_PIN, INPUT); // კავშირის გადამოწმება Serial.println (F ("მოწყობილობის კავშირების ტესტირება …")); Serial.println (mpu.testConnection ()? F ("MPU6050 კავშირი წარმატებულია"): F ("MPU6050 კავშირი ვერ მოხერხდა")); // დაელოდეთ მზადაა // Serial.println (F ("\ n გაგზავნეთ ნებისმიერი სიმბოლო, რომ დაიწყოთ DMP პროგრამირება და დემო:")); // ხოლო (Serial.available () && Serial.read ()); // ცარიელი ბუფერი // while (! Serial.available ()); // დაელოდეთ მონაცემებს // სანამ (Serial.available () && Serial.read ()); // კვლავ ცარიელი ბუფერი // ჩატვირთეთ და დააკონფიგურირეთ DMP Serial.println (F ("DMP ინიციალიზაცია …")); devStatus = mpu.dmpInitialize (); // მიაწოდეთ თქვენი საკუთარი გიროსოფსეტები აქ, შემცირებული მინიმალური მგრძნობელობით mpu.setXGyroOffset (0); mpu.setYGyroOffset (0); mpu.setZGyroOffset (0); mpu.setZAccelOffset (1688); // 1688 ქარხნული ნაგულისხმევი ჩემი საცდელი ჩიპისთვის // დარწმუნდით, რომ ის მუშაობდა (აბრუნებს 0 -ს) თუ (devStatus == 0) {// დაკალიბრების დრო: შექმენით ოფსეტები და დაკალიბრება ჩვენი MPU6050 mpu. CalibrateAccel (6); mpu. CalibrateGyro (6); mpu. PrintActiveOffsets (); // ჩართეთ DMP, ახლა უკვე მზად არის Serial.println (F ("DMP ჩართვა …")); mpu.setDMP ჩართულია (ჭეშმარიტი); // ჩართეთ Arduino შეწყვეტის გამოვლენა Serial.print (F ("შეწყვეტის გამოვლენის ჩართვა (Arduino გარე შეწყვეტა")); Serial.print (digitalPinToInterrupt (INTERRUPT_PIN)); Serial.println (F (")…")); attachInterrupt (digitalPinToInterrupt (INTERRUPT_PIN), dmpDataReady, RISING); mpuIntStatus = mpu.getIntStatus (); // დააყენეთ ჩვენი DMP Ready დროშა, რათა მთავარმა მარყუჟის () ფუნქციამ იცოდეს, რომ ნორმალურია მისი გამოყენება Serial.println (F ("DMP მზად არის! ველოდები პირველ შეწყვეტას …")); dmpReady = ჭეშმარიტი; // მიიღეთ მოსალოდნელი DMP პაკეტის ზომა შემდგომი შედარებისთვის packetSize = mpu.dmpGetFIFOPacketSize (); } სხვა {// შეცდომა! // 1 = მეხსიერების საწყისი ჩატვირთვა ვერ მოხერხდა // 2 = DMP კონფიგურაციის განახლება ვერ მოხერხდა // (თუ ის გატეხავს, ჩვეულებრივ კოდი იქნება 1) Serial.print (F ("DMP ინიციალიზაცია ვერ მოხერხდა (კოდი")); სერიული ბეჭდვა (devStatus); Serial.println (F (")")); }} void loop () {if (! dmpReady) დაბრუნება; if (mpu.dmpGetCurrentFIFOPacket (fifoBuffer)) {// მიიღეთ უახლესი პაკეტი // აჩვენეთ ეილერის კუთხეები გრადუსში mpu.dmpGetQuaternion (& q, fifoBuffer); mpu.dmpGetGravity (& სიმძიმე, & q); mpu.dmpGetYawPitchRoll (ბრუნვა, & q, & სიმძიმის); } Serial.print ("X"); Serial.print (ბრუნვა [2] * 180/M_PI); Serial.print ("\ t Y"); Serial.print (ბრუნვა [1] * 180/M_PI); Serial.print ("\ t Z"); Serial.println (rotace [0] * 180/M_PI); x = ბრუნვა [2] * 180/M_PI; y = ბრუნვა [1] * 180/M_PI; z = ბრუნვა [0] * 180/M_PI; if (abs (x) <45 && abs (y) 45 && abs (x) <135 && (abs (y) 135)) {activeColor = pixels. Color (255, 0, 0); // წითელი როდესაც გადაუხვევთ მხარეს} სხვაგან თუ (x <-45 && abs (x) <135 && (abs (y) 135)) {activeColor = pixels. Color (0, 255, 0); // მწვანე როდესაც მეორე მხარეს გადაუხვევთ} სხვა შემთხვევაში თუ (y> 45 && abs (y) <135 && (abs (x) 135)) {activeColor = pixels. Color (255, 255, 0); // ყვითელი როდესაც გადაუხვევთ მესამე მხარეს} სხვა შემთხვევაში თუ (y <-45 && abs (y) <135 && (abs (x) 135)) {activeColor = pixels. Color (0, 0, 255); // ლურჯი როდესაც მეოთხე მხარეს გადაუხვევთ} სხვა შემთხვევაში თუ (აბს (y)> 135 && abs (x)> 135) {activeColor = pixels. Color (0, 0, 0); // შავი როცა თავდაყირაა} if (activeColor! = OldActiveColor) {pixels.clear (); pixels.fill (activeColor); pixels.show (); oldActiveColor = აქტიური ფერი; }}

დაბოლოს, თქვენ შეგიძლიათ გახსნათ და ატვირთოთ ColorCube.ino ფაილი. განათავსეთ ColorCube ბრტყელი ზედაპირი და ჩართეთ იგი. არ გადააადგილოთ მანამ, სანამ კალიბრაციის შემდეგ (რამდენიმე წამი) არ იწყებს სინათლეს თეთრი ფერით. შემდეგ თქვენ შეგიძლიათ დააყენოთ ColorCube გვერდზე და ფერი შეიცვლება - ყველა მხარეს აქვს თავისი ფერი - წითელი, მწვანე, ლურჯი, ყვითელი. ColorCube ქრება, როდესაც ის თავდაყირა დგება.

ნაბიჯი 6: შეკრება

აწყობა
აწყობა
აწყობა
აწყობა
აწყობა
აწყობა

იყავით ნაზი შეკრების დროს. მავთულხლართებს და ყველა ნაწილს არ მოსწონს უხეში ქცევა.

ღილაკი 3D ნაბეჭდი ნაწილი - რბილად დააყენეთ ღილაკი ქვედა ნაბეჭდ ნაწილში (როგორც ნაჩვენებია სურათზე), ის შეუფერხებლად უნდა შევიდეს და გამოვიდეს, თუ არ გამოიყენოთ სკალპელი ან მკვეთრი დანა ან ქვიშის ქაღალდი ყველა ზედმეტი მასალის მოსაშორებლად (ძირითადად შიგნით წრის ხვრელის ზედა ნაწილი ქვედა ნაწილში). (ფოტო)

განათავსეთ MPU-6050, Arduino Nano, TP4056 და MT3608 მათ ხვრელებში. ყუთს აქვს პროტრაჟები, რომლის ქვეშ თქვენ ჩადეთ MPU-6050 და MT3608. ჩასვით Arduino Nano და TP4056 USB კონექტორები ყუთის გვერდით კედლებში მათ ხვრელებში. (ფოტო)

გამოიყენეთ 3D დაბეჭდილი საკეტი კომპონენტების დასაფიქსირებლად (დარწმუნდით, რომ ყველა კომპონენტი მჭიდროდ არის მოთავსებული ქვედა ნაწილზე). ეს მნიშვნელოვანია, რადგან ვიღაც აუცილებლად შეეცდება ითამაშოს თქვენს ColorCube– ით, როგორც კამათელი. (ფოტო)

ჩადეთ და დააინსტალირეთ ბატარეა მის ხვრელში, თუ ის მაგრად არ ეჭირა.

ქვედა ნაწილში მომზადებულ ხვრელს დაადეთ თვითდაბლოკვის ღილაკი. ღილაკი უნდა იყოს ჩართული (მოკლე). ნაზად დააჭირეთ ღილაკს ქვემოთ. შეამოწმეთ ფუნქციონირება 3D დაბეჭდილი ღილაკით. (ფოტოები)

გამოიყენეთ ორი M2 ხრახნი LED ბეჭდის დასაბეჭდად შუა დაბეჭდილ ნაწილზე. კარგია გამოიყენოთ ბეჭდის ორიენტაცია, სადაც მავთულის კონტაქტები შუა დაბეჭდილი ნაწილის მომრგვალებულ ხვრელშია. (ფოტოები)

სურვილისამებრ: გამოიყენეთ წვეთი ცხელი წებო აქ და იქ - მავთულხლართებთან დაკავშირება, ძალიან გრძელი მავთულისთვის, თუ რამე არ არის საკმარისად მჭიდრო და ა.შ. მას შეუძლია თქვენი ColorCube უფრო გამძლე გახადოს.

მოაწყვეთ მავთულები ColorCube- ის შიგნით, რათა არ იყოს დაფარული დაბეჭდილი ნაწილებით. განათავსეთ შუა ნაწილი ქვედა ნაწილში. გამოიყენეთ M3 ხრახნი მის გასასწორებლად. (ფოტო)

დაბოლოს, ნაზად გადაწიეთ ზედა ნაბეჭდი ნაწილი ქვედა ნაწილში. (ფოტო)

ნაბიჯი 7: შესრულებულია

გილოცავთ. Გაერთე.

გირჩევთ: