Jump to content

oldmodeler

Members
  • Posts

    138
  • Joined

  • Last visited

Profile Information

  • Gender
    Male
  • Location
    gloucester UK

Recent Profile Visitors

760 profile views

oldmodeler's Achievements

New Member

New Member (2/9)

199

Reputation

  1. Most impressive, wow. I'm making the same kit, without the internals. I have looked at frame-by frame stills from the movie, and much of the external detailing is not from the movie 2001, but some form 2010 and from other models. I am cutting off the bits that are wrong,: the radial detailing behind the habitat sphere is the worst, some of the detailing around the same sphere, adding some to each of the 30+ module backs, the Mobieus repetition of the top an bottom of the engine block can't be right. The 2001 Discovery was not weathered, which Mobeius comment correctly, but a lot, hundreds of the tiny panels are slightly different off-grey blues and light greys. I thing a light grey-blue overall is a good description of the final effect on the screen. I notice you have corrected many of these faults . M. Oldmodeler
  2. Working on the Pod and Discovery, and HAL. Discovery, Looking at the small details, the Mobeius Model Discovery is not from the 2001 Discovery, all the essential parts are about right, but the small detailing is partly from the movie and partly from 2010 and some details are not from any movie stills or the pictures in Simon Atkinson's book. The 2001 Discovery ship went through several iterations and builds , and had 3 different models in 2001, and three in 2010 , according to Simon and the 2010 movie tie-in book: 2010 'The Year We Make Contact" magazine from TARGET p.48/9 shows the rear of the habitat sphere as different from the 2001 Discovery. so I am doing a compromise between the three. The 2010 version is crude in comparison, but the quick, sloppy 35mm camerawork hides a lot. The space pod seems pretty good in comparison. and when all six panels are lit, it detracts from my clumsy model making. The HAL panel is now done, with the correct apertures for the screens, square cut outs with rounded corners, then a square with bevelled edge. I'm not sure why some cannot see the pictures, unless it is the non-https restriction.
  3. Many of the pod instrument panel light positions are under the thickened parts of the panels that fit the edges, so, if you are building this model to light, it may be a good idea to cut out the thickened edges where they cover up the light squares, or drill for fiber-optic light strands. I found it impossible to do this once the panels are glued together, limiting the number of switches that can be lit . The panels fit together so well, that, as a test, you can clip all the parts in place to see where this happens before gluing. Also the displays on the 'real' prop are flush-fit with the panels, but you end up with a 1.mm step on model. It might be possible to cut out the entire panel locally to fit the Arduino ST7735 display behind the paper transfer only, this would give a flush fit, though very tricky to support. I found, as noted above, it works well to leave the transfer on the paper background and glue it over the panel. -the transfer breaks up otherwise.
  4. The pictures are on a non https server, you may have selected not to access non https servers. Aztek build is amazing, the man has adopted many of the methods I have also used, silver paper light block, making light boxes etc. I think the front two displays are running movies taken from the actual 20012 movie in Aztec's version. I am making graphic displays with graphic draws, lines, text, circles etc, which is clearer I think... Also doing both the side double displays, 6 in all. When all running , plus the lights, it looks quite good. Please let me know it this enables you to see the pictures. I will supply a link to the movie of the pod interior if I can download to the server. Have also been working on the Big HAL which has 320x320 = 50mm square displays, done frame-by-frame as best I can do copies of the HAL display screens. This looks even better, About 30seconds takes about two days programming, which is not good for sanity. The Mobeius pod arms arms have been made so that they are stiff enough to set in any pose, I added some Vaseline to lube but they still hold position. This seems to work well. As the pod halves are now glued together, it now comes to how to clip the tow side 'ears' on, magnets or clips somehow. M
  5. Hi Will, As I wanted all screens animated at the same time, and the ARDUINO NANOs are only £5 each , it was easy to fund and solder each NANO to the back of the screen. I didn't get .bmp file writing to work with ST7735 breakouts which have slots for micro SD. The screens animate the same as in the movie, to the same timing and pauses. the refresh rates is sufficiently fast that most look reasonably instant. Seeing all 8 displays running at the same time is well, creepy, as though HAL is in the room, plotting something, ready to shut off the life support.... The C programs end up using more than 60% of the space just to load the graphics and font libraries, so the draws and texts are abbreviated to fit. I had to use a simple font for the large letters : LIF etc, MICROGAMMA extra bold was used in the film. The screens in the pod are .96 wide, 1.8wide for the two side screens The pod displays were eventually glued in place, with a mass of wires all over the place. I used the smallest single strand as it it bends easy. The push-in ARDUINO-type wires and connectors would be too big with the sheer amount of wires. The space pod glues together really well, provided test fittings are done to make sure it fits correctly. I have fitted the rear do in the open position, as it is hard to slide. HAL's eye and the four lights are also on the same 9v power, the NANOs are on a 5v power bus, with cables trailing out of the bottom engine bell. The Honeywell square switch look reasonable though I didn't use the after market light tubes. Much time has been spent single-stepping through the movie to copy the exact screen animation. though the 2x side screens and .96 front ones are not that easy to see detail. I have scaled up some of the larger HAL screens once more to 320 square and re-worked for the big HAL. Little and Big Hal's eye panel was made from card, using colour print paper to print out HAL 9000 at the top and black print for the panel front, glued to a slightly larger plastic strip pained silver to show silver edges. the clear domes from : modelshop.co.uk/Shop/Item/Hemisphere Currently experimenting with sine/cosine graphic draws to make some of the display plots. these draws replicate some of the moire patterns of HALs graphs. Also making the Mobieus Discovery. This goes together well with liquid glues. The plan is to have the small HAL as part of its display case.
  6. IMPRESSED! you have made a superb model from the Luna Models kit! Once had their Discovery, but sold it on, just as Mobieus made their 1/144 version. Looking forward to Mobeius making the Aries. M
  7. Wow. Most impressed,!! Twice the size of the Mobeius kit. I have that to make. currently doing the Space Pod with working internals and a working HAL900 - on other Forum. again : WOW!
  8. After making the above test HAL9000 display, I have added a HALS eye as well. -to show when the proper bezel is complete = 300mm wide. The HAL900 above has 28 different screens written in C, Ardufruit Grphics, as four programs of seven display, used twice. The real HAL sometimes shows the same display screen in two place. To do this I stepped through the movie fram-by-frame to copy the pictures as best I could. some were too memory consuming so I had to limit to the simpler ones. I can put the C programs on the web for copying if anybody wants them. All you need is 8 Arduino NANOS or UNOS or MEGGA250, and 8 x Ardfruit display, Download ARDUINO IDE and built the 4 programs and download to 4 sets of 2 .The you have your own HAL blinking away at you ! PIC: 4 screens up close. text would be too small to show so it is just a row of random dots . The 8 display running makes a convincing HAL. I have been working on the larger HAL900 which has 3.5in displays, effectively a 320 pixel square part used. This shows more detail in the display screens I have mocked up. It will be 600mm wide. Each screen display takes between one and three days to program. taking perhaps hundreds of test to get it to look right, overwrites on top of writes and delays() to make thing blink. Not model making, but I see that animation, lighting , sound and whirling propellers were there at the last Telford IPMS. Lockdown hopefully ending, permitting the next Telford IPMS.
  9. Progress: Progress so far. I got diverted in making a 1/8 scale model of the HAL9000 computer (see above). This has 8 1.8in animated screens , effectively 30mm square, powered by 8 Arduino NANO computers to make a working? HAL. The bezel is in progress, temporally fitted to a card bezel. HALS eye made from small PVC hemispheres from 4D Model shop. modelshop.co.uk This looks really, good, but this site does not seem to permit .mov files to show. The space pod is now as far as fitting the two main halves together. After fitting the window, which turned out acceptable, it tends to obstruct the close fitting of the halves a bit, so I had to skim a little of the window surround and use filler. This may be because I have miss-aligned something elsewhere, but worth doing MANY test fits as you make the pod. to ensure it is going to fit properly. Apart from my possible mistake there, all the other bits fit well, considering they are complex shapes. This shows the complex wiring for the 4 ARDUINOS and 2x 1in and 2x1.8in displays, and all the LED wiring. I used the Tenna lighting kit leds, and made boxes to stand them off. but wired them up without using the Tenna control, as that doesn't represent anything relevant. HALS'eye is a small red LED in front This is the internal, animated , it looks great. but doesn't show up well in the picture. The switches are lit with simple LED strips behind, which tends to light a group in the middle sort of. not the best work. The overhead circle bit is also lit, as are the two round display on the wall. The power is off-board, with wirings coming out of the rocket bell in the bottom, this will be on to a black felt stand. As this looks good, I plan to make a complete 2001 display, of Discovery in a large museum clear acrylic case with the HAL as part of the case. Also the Pod on a stand, and the Moonbus...as well.
  10. Thanks Tommo, the build is fast becoming a programming one. I should get back to the plastic! There are several pod builds on YouTube which look better. The movie of the internals was too large for the server download limit. The strange thing is the movie was around 1966 when it was made, the artists and set builders predicted window views on a computer somehow, when few computers were in use, they had punch cards, no graphic display, and then ---they though computers could be intelligent! Ha, Ha. I have the MOBEIUS 1/144 Discovery and 1/55 moonbus to do after. The MOBEIUS kit is supposed to be from the movie 2001, but some say it is the one from 2010 especially around the windows at the front. The plan is to paint the panel work exactly as the 54ft movie prop, it is mostly a blue-grey that is had to get right.
  11. UPDATE. Spent ages programming the ARDUINO to display the screens, Now using 0.96 in TECHNOIT colour displays for the front two screens Here is a picture of the screens fitted outside the cockpit, to show through the apertures. Next picture shows the wiring to the ARDUINO NANO processors: some too long, as they were going to be 'outboard' . The displays are glued in place, supported by sticky tape until it sets. GORILLA tape is useless, it un-glues itself. Using a single 5V 18A power supply for the boards, and 9V PP9 for the LEDs. My original idea was to have the NANO boards outside the pod, but as they are small, they can be fitted inside. This would mean the 'ears' sides, will have to be removable to service, etc. so they will have to be some sort of magnetic clips. Tried uploading a movie of the inside, but it was too large for the server. pity as it looks very good. While writing the C programs, I realised I could now make a complete 8 screen HAL9000 , as seen in the centrifuge and on the flight deck. I started with Ardufruit ST7735 Breakout 1.8 in display,s then went to 2.8 and then 3.5 in displays for testing the software. The big problem as , again, the settings for rotation, colour management etc. As the display is landscape, to get them near enough to look like a HAL9000 display setting, they have to be landscape, left, right position to l get the gaps right. The 8 screens would fit on a 2ft long black panel with the apertures cut out as per movie. Continuing with the space pod. The screens can only be seen inside , so it is a lot of effort for very little. I didn't use the light tubes or stick on light blocking sheets, as I have spent a load on it already. Mainly it was about making small light-boxes to show through lines of buttons, and it doesn't illuminate every light, but looking at the movie (which I now have on my MAC), not all the buttons are lit at any time, and only a few are pressed. Also, none flicker. Attempting to individually light some, Does anybody have a source for single fibre-optic lead? M
  12. correct, these are the best I can do with the graphics draws. M
  13. sorry about that, the link message , ignore, only happens if you don't have the correct link please past link as per, into your URL address , not where you type to do searches? that should work. sorry again, used to work just fine, can you see any other of my pictures in blogs written above by me?? M
  14. Hi folks! Are you having problems seeing oldmodelers pictures? they are at http://www.cjdeng.co.uk/space_pod/DISP6.jpg http://www.cjdeng.co.uk/space_pod/DISP7.jpg http://www.cjdeng.co.uk/space_pod/DISP8.jpg http://www.cjdeng.co.uk/space_pod/DISP9.jpg try pasting link into new web page? let me know if it works? M
  15. DISPLAYS flicker, animate, show names, scroll and sequence roughly like the HAL screens, but there is no graphic for an oval orbit, hence have to do circular orbits in the last picture. Tex its just a rows of random dots, as it cannot be read at that scale anyway. Screens sequences as per movie. this leaves about 800 byts left if you want to add any more screens. Doing another set for the other side (colour). loop() at bottom can be changes to give different screens, uncomment //cycle_scrrens(): to loop all the names. C programs for ARDUINO UNO //BREAKOUT ST7735 version for NANO M MC. 2021 // adjust to fit at top of panel #include <SPI.h> #include <SD.h> //#include <TFT.h> //#include <string.h> #include <String.h> #include <Adafruit_GFX.h> #include <Adafruit_ST7735.h> //#include <Adafruit_seesaw.h> //#include <Adafruit_TFTShield18.h> #include <Adafruit_TFTLCD.h> #include <Fonts/FreeSansBold9pt7b.h> //Adafruit_TFTShield18 ss; //#define SD_CS 4 // Chip select line for SD card on Shield #if defined(ARDUINO_FEATHER_ESP32) // Feather Huzzah32 #define TFT_CS 14 #define TFT_RST 15 #define TFT_DC 32 #elif defined(ESP8266) #define TFT_CS 4 #define TFT_RST 16 #define TFT_DC 5 #else // For the breakout board, you can use any 2 or 3 pins. // These pins will also work for the 1.8" TFT shield. #define TFT_CS 10 #define TFT_RST 8 // Or set to -1 and connect to Arduino RESET pin was 9 #define TFT_DC 9 // was 8 #endif // OPTION 1 (recommended) is to use the HARDWARE SPI pins, which are unique // to each board and not reassignable. For Arduino Uno: MOSI = pin 11 and // SCLK = pin 13. This is the fastest mode of operation and is required if // using the breakout board's microSD card. // For 1.44" and 1.8" TFT with ST7735 use: Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_RST); // Color definitions #define BLACK 0x0000 #define BLUE 0x001F #define RED 0xF800 #define GREEN 0x08F0 #define CYAN 0x07FF #define MAGENTA 0xF81F #define YELLOW 0xFFE0 #define WHITE 0xFFFF #define DKBLU 0x08F0 #define VLBLU 0x07FF #define LTBLU 0x3333 #define DKRED 0xE800 #define DKREDC 0xB800 #define DK2_RED 0xD800 // In global declarations: //GFXcanvas1 canvas(128, 64); //screen centers starts static int S1_ctr_x = 40; int S1_ctr_y = 50; static int S2_ctr_x = 120; int S2_ctr_y = S1_ctr_y ; //screen top left starts static int S1_x = 0; int S1_y = 0; static int S2_x = 81; int S2_y = 0; static int OS_x = S2_x; static int OS_y = S2_y; static int C_OS1_x = S1_ctr_x; static int C_OS1_y = S1_ctr_y; static int C_OS2_x = S2_ctr_x; static int C_OS2_y = S2_ctr_y; static int S_COLOUR = 0x000c; int stopp = 0; //function called by screen 2 refresh int Screen_2(int S_COLOUR) { tft.fillRoundRect(S2_x, S2_y, 79, 90,1, S_COLOUR ); // Screen 2 } // function called by screen 1 refresh. int Screen_1(int S_COLOUR) { tft.fillRoundRect(S1_x, S1_y, 79, 90,1, S_COLOUR ); // Screen 1 } //#define MAXLINE 4 char *screen_colour(int n) { // static char *name[] = { // BLUE 0x000c, 0x0019,0x001f,0x633f,0x9cdf,0x0019,0x001f,0x3333,0x9cdf, // RED 0x6000, 0xf800 , 0xfb2c , 0xfcd3, 0x6000, 0xf800 , 0xd800 , 0xfcd3, 0x6000, // GREEN 0x31a0, 0x3320, 0x4cc0, 0x0640, 0x0fe0, 0x04c0, 0xfcd3, 0x31a0, 0x3320 }; return ( name[n] ); } // this loops through screen names char *hal_func(int n) { static char *name[] = { "MEM", "NUC","HIB","DMG", "NAV", "FLX", "CNT", "GDE", "DMG", "VEH", "MEM", "NUC","HIB","CNT", "NAV", "COM", "CNT", "HIB", "DMG", "VEH", "MEM", "VED","HIB","FLX", "GDE", "COM", "FLX", "GDE", "DMG", "VEH" }; //return ( n < 1 || n > 27 ) ? name[0] : name[n]; return ( name[n] ); } static String NAME = String(hal_func(2)); //this function refreshes screen 1 int SCN1(String NAME, int S_COLOUR){ Screen_1(S_COLOUR ); tft.setTextSize(1); tft.setTextColor(WHITE); tft.setCursor( S1_x + 25 ,S1_y + 50 ); tft.print( NAME); tft.drawLine(20, S1_y + 34, 35, S1_y + 34, WHITE ); tft.drawLine(37, S1_y + 34, 40, S1_y + 34, WHITE ); } int SCN2(String NAME, int S_COLOUR){ Screen_2(S_COLOUR); tft.setTextSize(1); tft.setTextColor(WHITE); tft.setCursor( S2_x + 25 ,S2_y + 50 ); tft.print(NAME); tft.drawLine(105, S1_y + 34, 114, S1_y + 34,WHITE ); tft.drawLine(130, S1_y + 34, 133, S1_y + 34,WHITE ); } void circles1(){ NAME = String(hal_func(9)); S_COLOUR = 0; //0x000c; SCN1(NAME,screen_colour(S_COLOUR)); // C_OS_x C_OS_x OS_x = S1_x; OS_y = S1_y; delay(5000); S_COLOUR = 0x000c ; Screen_1(S_COLOUR); int i; for ( i = 0; i < 27 ; i = i + 3 ) { tft.drawCircle(C_OS1_x , C_OS1_y , 8 + i, LTBLU ); } int x = C_OS1_x ; // 40; int y = C_OS1_y ; // 60; tft.drawLine(x + 2 , y , 52, 30, LTBLU ); int xx = 5; tft.drawLine(xx,y, x + 35, y, LTBLU); // 1 hz tft.drawLine(x,20, x,90, LTBLU ); // 2 vrt tft.drawLine(x,y,x +30,y +30,LTBLU); tft.drawLine(x,y,x +30,y -30,LTBLU); tft.drawLine(x,y,x +30,y -30,LTBLU); tft.drawLine(x,y,x -30,y -30,LTBLU); tft.drawLine(x,y,x -30,y +30,LTBLU); tft.drawLine(x,y,x -30,y +10,LTBLU); tft.drawLine(x,y,x +30,y -10,LTBLU); tft.drawLine(x,y,x +10,y -30,LTBLU); tft.drawLine(x,y,x -10,y +30,LTBLU); tft.drawLine(x,y,x +10,y +30,LTBLU); tft.drawLine(x,y,x -10,y -30,LTBLU); tft.drawLine(x,y,x +10,y -30,LTBLU); tft.drawLine(x,y,x -10,y +30,LTBLU); tft.drawLine(x,y,x +30,y +10,LTBLU); tft.drawLine(x,y,x -30,y -10,LTBLU); tft.fillCircle(x,y,4, S_COLOUR); // infill the centre. tft.drawCircle(x,y,4, LTBLU ); int z = 5; tft.fillRect(57, 16, 15,28,S_COLOUR) ; for ( x = 0; x < 7; x = x + 2 ) {// a row of dots top of Screen 1 // a row of dots top of Screen 1 tft.drawPixel(x + 60, 19 + z, LTBLU ); tft.drawPixel(x + 60, 21 + z, LTBLU ); tft.drawPixel(x + 60, 23 + z, LTBLU ); tft.drawPixel(x + 60, 26 + z, LTBLU ); tft.drawPixel(x + 60, 29 + z, LTBLU ); tft.drawPixel(x + 60, 32 + z, LTBLU ); tft.drawPixel(x + 60, 35 + z, LTBLU ); delay(500); } } void red_orbit2(){ // screen 2 only NAME = String(hal_func(4)); S_COLOUR = 10 ; SCN2(NAME,screen_colour(S_COLOUR)); Serial.print(S_COLOUR); Serial.print("\n"); int x; int y; delay(5000); for ( x = 0; x < 50; x = x + 2 ) { //NAME = String(hal_func(4)); Screen_2(0xf800); tft.drawCircle(S2_ctr_x , S2_ctr_y,30 , 0xfb2c ); //a circle tft.drawLine(S2_ctr_x +2 , S2_ctr_y, S2_ctr_x + 30 , S2_ctr_y, 0xfb2c ); tft.drawCircle(S2_ctr_x +5 , S2_ctr_y + 5, 20 , 0xfb2c ); tft.drawCircle(S2_ctr_x + 4 , S2_ctr_y, 28 , 0xfb2c ); tft.drawCircle(S2_ctr_x - 4 , S2_ctr_y, 35 , 0xfb2c ); tft.fillCircle(S2_ctr_x + 4, S2_ctr_y + 20, 5, 0xfb2c ); tft.fillCircle(S2_ctr_x + 24, S2_ctr_y - 22, 2, 0xfb2c ); tft.drawLine(S2_x +10, S2_y +10, S2_x + 30, S2_y +10,0xfb2c ); tft.drawLine(S2_x +45, S2_y +10, S2_x + 60, S2_y +10,0xfb2c ); } for ( x = 0; x < 20; x = x + 2 ) { tft.drawPixel(S2_x +50 + x, S2_y +40 ,ST77XX_WHITE); } for ( x = 0; x < 20; x = x + 2 ) { tft.drawPixel(S2_x +50 + x, S2_y +43 ,ST77XX_WHITE); } circles1(); // flash circles in 1 } void dot_square2() { NAME = String(hal_func(9)); S_COLOUR = 14; // 0xf800; SCN2(NAME,screen_colour(S_COLOUR)); S_COLOUR = 0xf800; delay(5000); Screen_2(S_COLOUR); int x = 0; int y = 0; for (y = 2; y < 89 ; y = y + 2 ) { for ( x = 1; x < 77; x = x + 2 ) { tft.drawPixel(S2_x + x + 1, S2_y + y ,WHITE); } } tft.drawLine(S2_x + 1 , S2_ctr_y , S2_x + 89, S2_ctr_y ,WHITE); // hz tft.drawLine(S2_x +40, S2_y + 2 , S2_x + 40 , S2_y + 88, WHITE); // ver tft.fillRect(S2_x + 10, S2_y + 5, 22, 5,WHITE ); tft.fillRect(S2_x + 44, S2_y + 5, 10, 5,WHITE ); tft.fillRect(S2_x + 58, S2_y + 5, 10, 5,WHITE ); tft.fillCircle(S2_ctr_x , S2_ctr_y ,5,WHITE); delay(200); for ( x = 0; x < 10; x = x + 1 ) { tft.fillRect(S2_x + 10, S2_y + 80, 22, 5,BLACK); delay(100); tft.fillRect(S2_x + 10, S2_y + 80, 22, 5,WHITE); delay(100); } } void cba_ob1(void){ // a red screen of rectangles and text. String NAME = String(hal_func(5)); S_COLOUR = 15; SCN1(NAME,screen_colour(S_COLOUR)); S_COLOUR = screen_colour(S_COLOUR); delay(2000); // blank colour screen Screen_1(S_COLOUR ); tft.setFont(); tft.fillRoundRect(S1_x + 10, S1_y + 10 , 55, 10, 1,WHITE ); tft.drawLine(S1_x + 35, S1_y + 15 , S1_x + 49, S1_y + 15 , S_COLOUR); tft.drawLine(S1_x + 35, S1_y + 18 , S1_x + 49, S1_y + 18 , S_COLOUR); tft.fillRoundRect(S1_x + 10, S1_y + 25 , 10, 10, 1, WHITE ); // row of 3 rectangles tft.fillRoundRect(S1_x + 24, S1_y + 25 , 20, 10, 1, WHITE ); // Screen 1 tft.fillRoundRect(S1_x + 50, S1_y + 25 , 20, 10, 1, WHITE ); // Screen 1 tft.drawLine(S1_x + 12, S1_y + 28 , S1_x + 15, S1_y + 28 , S_COLOUR); // little line on 1st side box tft.drawLine(S1_x + 12, S1_y + 31 , S1_x + 15, S1_y + 31, S_COLOUR); // little line on 1st side box tft.fillRoundRect(S1_x + 10, S1_y + 40 , 10, 15, 1, WHITE ); // Screen 1 next row of 3 rectangles tft.fillRoundRect(S1_x + 24, S1_y + 40 , 20, 15, 1, WHITE ); // Screen 1 tft.fillRoundRect(S1_x + 50, S1_y + 40 , 20, 15, 1, WHITE ); // Screen 1 tft.drawLine(S1_x + 12, S1_y + 44 , S1_x + 15, S1_y + 44 , S_COLOUR); // little line on 1st side box tft.drawLine(S1_x + 12, S1_y + 48 , S1_x + 15, S1_y + 48, S_COLOUR); // little line on 1st side box tft.fillRoundRect(S1_x + 10, S1_y + 60 , 55, 16, 1, WHITE ); // Screen 1 tft.setTextSize(1); tft.setTextColor(S_COLOUR); tft.setCursor( S1_x + 15 ,S1_y +65 ); tft.print( "DB"); tft.setTextSize(0); tft.setTextColor(S_COLOUR); tft.setCursor( S1_x + 15 ,S1_y +12 ); tft.print( "CBA"); tft.setFont(&FreeSansBold9pt7b); } void lines1() { int i = 1; int x = 1; int z = 1; for ( i = 0; i < 40 ; i = i + 3 ) // adds dots within horizontal lines { tft.drawLine(OS_x + 10, OS_y + 30 + i ,OS_x + 12, OS_y + 30 + i, LTBLU ); tft.drawLine(OS_x + 20, OS_y + 30 + i, OS_x + 70, OS_y + 30 + i, LTBLU ); delay(2); } delay(1000); x = 1; for ( x = 0; x < 40; x = x + 2 ) { // a row of dots top of Screen 1 tft.drawPixel(OS_x + 14 + x , 19, LTBLU ); // a row of dots top of Screen 1 tft.drawPixel(OS_x + 14 + x , 21, LTBLU ); // a row of dots top of Screen 1 } for ( x = 0; x < 3; x = x + 1 ) { tft.drawRect(OS_x + 12, OS_y + 15,50,10, LTBLU ); // Screen 1 flashing clear white line rectangle at top of screen. delay(100); tft.drawRect(OS_x + 12, OS_y + 15,50,10, VLBLU ); // a lighter blue ); delay(100); } z = 1; for ( z = 0; z < 20; z = z + 1 ) { tft.fillRect(OS_x + 24,OS_y + 80,12 + z,4 , LTBLU ); delay(20); } // add random dots among hz lines for ( z = 0; z < 300; z = z + 1 ) { int ra1 = random(20,70); int ra2 = random(30,60); tft.drawPixel(OS_x + ra1, OS_y + ra2, LTBLU ); tft.drawPixel(OS_x + ra1, OS_y + ra2+1, LTBLU ); } for ( z = 0; z < 12; z = z + 1 ) { tft.fillRect(OS_x + 24,OS_y + 72, 32,4 , ST77XX_BLUE); delay(100); tft.fillRect(OS_x + 24,OS_y + 72, 32,4 , LTBLU); delay(100); } delay(500); for ( z = 0; z < 10; z = z + 1 ) { tft.fillRect(OS_x + 24,OS_y + 77, 32,4 , ST77XX_BLUE); delay(100); tft.fillRect(OS_x + 24,OS_y + 77, 32,4 , LTBLU); delay(100); } } void lines_move1() { // LINES MOVE NAME = String(hal_func(1)); // DMG S_COLOUR = 4 ; // 0x9cdf; SCN1(NAME,screen_colour(S_COLOUR)); // C_OS_x C_OS_x OS_x = S1_x; OS_y = S1_y; S_COLOUR = screen_colour(S_COLOUR); delay(6000); // blank colour screen Screen_1(S_COLOUR ); int z; int k; int n = 0; int y_off = 75; int z_off = 75; int x_rand1 = random(5,78); int x_rand2 = random(5,78); int x_rand3 = random(5,15); for ( k = 0; k < 120; k = k + 4 ) { // loop to scrool text up screen I hope //Screen_1(S_COLOUR ); tft.drawPixel(OS_x + z, OS_y + 70, ST77XX_WHITE ); // l 1beginning of line pixels tft.drawPixel(OS_x + 5 + z, OS_y + 70, ST77XX_WHITE ); // l1 for ( z = 0; z < 22; z = z + 2 ) { tft.drawPixel(OS_x + 20 + z, OS_y + 70, ST77XX_WHITE ); // l1 } tft.drawLine(OS_x + 27 + z, OS_y + 70 , OS_x + 37 + z , OS_y + 70, ST77XX_WHITE ); // l1 lines tft.drawLine(OS_x + 39 + z, OS_y + 70, OS_x + 47 + z, OS_y + 70, ST77XX_WHITE ); // l1 tft.drawPixel(x_rand1, OS_y + 70, ST77XX_WHITE ); tft.drawPixel(x_rand2, OS_y + 70, ST77XX_WHITE ); x_rand3 = random(8,70); tft.drawPixel(x_rand3, OS_y + 70, ST77XX_WHITE ); // draws dots all over text lines tft.drawPixel(x_rand3 + 1 , OS_y + 70, ST77XX_WHITE ); // draws dot to the right of the one above tft.drawPixel(x_rand3 + 2 , OS_y + 70, ST77XX_WHITE ); // draws dot two spaces to the right tft.drawPixel(x_rand3 + 3 , OS_y + 70, ST77XX_BLUE); // draws dot two spaces to the right tft.drawPixel(x_rand3 + 4 , OS_y + 70, ST77XX_BLUE); // draws dot two spaces to the right delay(50); OS_y = OS_y -2 ; } tft.drawRect(S1_x + 5, S2_y + 10, S1_x + 5, 60, ST77XX_WHITE ); // left rectangle tft.drawLine(S1_x + 27 + z, S1_y + 10, S1_x + 37, S1_y + 10, ST77XX_WHITE ); // l1 lines tft.drawLine(S1_x + 39 + z, S1_y + 50, S1_x + 47, S1_y + 50, ST77XX_WHITE ); // l1 delay(100); for ( k = 0; k < 25; k = k + 1 ) { tft.fillRect(S1_x + 24,S1_y + 5, 32,4 , ST77XX_BLUE); delay(50); tft.fillRect(S1_x + 24,S1_y + 5, 32,4 , ST77XX_WHITE ); // flashes the whie box at top delay(100); } tft.drawRect(S1_x + 5, S1_y +75, 20, 3 , ST77XX_WHITE ); // three small rectangles at bottom delay(1000); tft.drawRect(S1_x + 25, S1_y +75, 20,3 , ST77XX_WHITE ); delay(100); tft.drawRect(S1_x + 50, S1_y +75, 20,3 , ST77XX_WHITE ); tft.drawRect(S1_x + 5, S1_y + 75 +6, 20,3 , ST77XX_WHITE ); // three small rectangles at bottom tft.drawRect(S1_x + 25, S1_y + 75 + 6, 20,3 ,LTBLU ); tft.drawRect(S1_x + 50, S1_y + 75 + 6, 20,3 , VLBLU ); delay(1000); int x = 0; int y = 0; } void non_func1_2(){ int n; S_COLOUR = 1; Screen_1(0xF800); Screen_2(0xF800); tft.setFont(); tft.setTextSize(1); tft.setTextColor(WHITE); tft.setCursor( S1_x + 20,S1_y + 40 ); tft.print( "NON"); tft.setCursor( S1_x + 20,S1_y + 50 ); tft.print( "FUNCTION"); tft.setCursor( S2_x + 20,S1_y + 40 ); tft.print( "NON"); tft.setCursor( S2_x + 20,S1_y + 50 ); tft.print( "FUNCTION"); for ( n = 1; n < 50; n = n + 1 ) { Screen_1(0xF800); tft.setCursor( S1_x + 20,S1_y + 40 ); tft.print( "NON"); tft.setCursor( S1_x + 20,S1_y + 50 ); tft.print( "FUNCTION"); delay(60); Screen_2(0xF800); tft.setCursor( S2_x + 20,S1_y + 40 ); tft.print( "NON"); tft.setCursor( S2_x + 20,S1_y + 50 ); tft.print( "FUNCTION"); delay(60); } tft.setFont(&FreeSansBold9pt7b); } void cycle_screens(){ OS_x = S2_x; OS_y = S2_y; int z = 0; for ( z = 0; z < 27; z = z + 2 ) { NAME = String(hal_func(z)); SCN1(NAME,screen_colour(z)); NAME = String(hal_func(z + 1)); SCN2(NAME,screen_colour(z +1)); delay(5000); } } void squares2(void) { // a few small squares NAME = String(hal_func(0)); // DMG S_COLOUR = 4 ; // 0x9cdf; SCN2(NAME,screen_colour(S_COLOUR)); int x = S1_x; int y = S1_y; delay(1000); S_COLOUR = screen_colour(S_COLOUR); Screen_2(S_COLOUR ); tft.setFont(); x = 1; int r1 = random(1,50); for ( x = 0; x < 55; x = x + 1 ) // row of dots { r1 = random(1,100); if (r1 > 50) { tft.drawPixel(S2_x + 14 + x , S2_y + 11, WHITE ); } r1 = random(1,100); if (r1 > 50) { tft.drawPixel(S2_x + 14 + x , S2_y + 13, WHITE); } } int h = 38; for ( x = 0; x < 20; x = x + 1 ) // row of dots { r1 = random(1,100); if (r1 > 50) { tft.drawPixel(S2_x + 15 + x , h , WHITE ); } r1 = random(1,100); if (r1 > 50) { tft.drawPixel(S2_x + 22 + x , h + 2 , WHITE); } r1 = random(1,100); if (r1 > 50) { tft.drawPixel(S2_x + 22 + x , h + 4, WHITE); } r1 = random(1,100); if (r1 > 50) { tft.drawPixel(S2_x + 22 + x , h + 6, WHITE); } r1 = random(1,100); if (r1 > 50) { tft.drawPixel(S2_x + 15 + x , h + 8, WHITE); } } for ( x = 0; x < 7; x = x + 1 ){ delay(100); tft.fillRect(S2_x + 60, S2_y + 25, 10, 10,S_COLOUR); // 1 delay(100); tft.fillRect(S2_x + 60, S2_y + 25, 10, 10,ST77XX_WHITE ); tft.setCursor( S2_x + 63, S2_y + 27 ); tft.setTextColor(BLUE); tft.setTextSize(1); tft.print( "E"); } delay(200); for ( x = 0; x < 7; x = x + 1 ){ delay(100); tft.fillRect(S2_x + 60, S2_y + 38, 10, 10,S_COLOUR); // 2 delay(100); tft.fillRect(S2_x + 60, S2_y + 38, 10, 10,ST77XX_WHITE); tft.setCursor( S2_x + 63, S2_y + 40 ); tft.setTextColor(RED); tft.print( "K"); } delay(200); for ( x = 0; x < 7; x = x + 1 ){ delay(100); tft.fillRect(S2_x + 60, S2_y + 51, 10, 10,S_COLOUR); // 3 delay(100); tft.fillRect(S2_x + 60, S2_y + 51, 10, 10,ST77XX_WHITE); tft.setCursor( S2_x + 63,S2_y + 53 ); tft.setTextColor(GREEN); tft.print( "G"); } for ( x = 0; x < 10; x = x + 1 ){ delay(100); tft.fillRect(S2_x + 25, S2_y + 66, 36, 12,S_COLOUR); // 3 delay(100); tft.fillRect(S2_x + 25, S2_y + 66, 36, 12, 0x4cc0); // 0x3320, 0x4cc0, 0x0640, 0x0fe0, tft.setCursor( S2_x + 27,S2_y + 69 ); tft.setTextColor(BLACK); tft.print( "CHECK"); } tft.setFont(&FreeSansBold9pt7b); tft.setTextSize(2); delay(200); } void light0(){ tft.fillRect(0, 94, 160,30, WHITE); // 3 } void dark1(){ tft.fillRect(0, 94, 80,30,BLACK); // 3 } void light1(){ tft.fillRect(0, 94, 80,30, WHITE); // 3 } void dark2(){ tft.fillRect(80, 94, 80,30,BLACK); // 3 } void light2(){ tft.fillRect(80, 94, 80,30, WHITE); // 3 } void setup(void) { // put your setup code here, to run once: // Use this initializer if using a 1.8" TFT screen: tft.initR(INITR_BLACKTAB); // Init ST7735S chip, black tab tft.setFont(&FreeSansBold9pt7b); tft.fillScreen(ST77XX_BLACK); // 0 portrait, 1 and 2 3 and 4 are landscape uint8_t rotation = 3; tft.setRotation(rotation); light0(); } void loop() { non_func1_2(); delay(20); cba_ob1(); delay(5000); squares2(); delay(5000); lines_move1(); delay(5000); dot_square2(); delay(1000); circles1(); delay(1000); dot_square2(); delay(1000); circles1(); lines_move1(); dark1(); delay(5000); dot_square2(); delay(5000); squares2(); light1(); delay(5000); red_orbit2(); delay(2000); circles1(); delay(5000); //cycle_screens(); red_orbit2(); delay(5000); dark2(); int z = 0; cba_ob1(); light2(); delay(1000); Screen_1(S_COLOUR); OS_x = S1_x; OS_y = S1_y; cba_ob1(); delay(5000); S_COLOUR = DKBLU ; Screen_2(S_COLOUR); OS_x = S2_x; OS_y = S2_y; lines1(); delay(1000); }
×
×
  • Create New...